[unity]c#中级编程-10-命名空间/using(代码片段)

L建豪忄YH L建豪忄YH     2023-03-25     532

关键词:

[Unity中文课堂教程] C#中级编程 - 10 - 命名空间/using

原教程视频地址:

《[Unity中文课堂教程预告片] C#中级编程_哔哩哔哩_bilibili

C#中级编程 - Unity中文课堂 (u3d.cn)

C# 命名空间(Namespace) | 菜鸟教程 (runoob.com)

内容短小精悍简练,每节只有几分钟。很适合用来预习和复习。

命名空间

  • 类似C语言中的库、Python中的包/模块,概念。
  • 使用关键字using导入“命名空间”,使用关键字namespace创建“命名空间”

对于不加命名空间,直接暴露的代码,且称为处于根空间内吧。

脚本①

namespace Exercise_4_21			// 命名空间一

	public class MyClass
	
		public MyClass()
		
			Debug.Log("Exercise_4_21;");
		
	

脚本②

namespace Exercise_4_22			// 命名空间二

	public class MyClass
	
		public MyClass()
		
			Debug.Log("Exercise_4_22;");
		
	
	
	namespace Exercise_4_22_ 	// 支持嵌套
	
		public class MyClass
		
			public MyClass()
			
				Debug.Log("Exercise_4_22_;");
			
		
	

脚本③

/*					// 不使用命名空间,如果去掉注释,上面脚本中带命名空间的重名类会被隐藏。
public class MyClass		// 如果与命名空间内容重名,则会调用优先调用没有命名空间的。

	public MyClass()
	
		Debug.Log("Exercise_4_23;");
	

*/

脚本④

// using Exercise_4_21;		// 如果两个都写,且两个命名空间有重名内容,会编译报错。
// using Exercise_4_22;		// 嵌套的重名也会
using Exercise_4_22.Exercise_4_22_;		// 点分割嵌套

public class Exercise_4_24 : MonoBehaviour

    void Start()
    
        MyClass myclass_3 = new MyClass();	// 根据导入的命名空间不同而调用不同的内容。
        
        Exercise_4_22.MyClass myclass_2 = new Exercise_4_22.MyClass();	// 精准指定调用
        Exercise_4_21.MyClass myclass_1 = new Exercise_4_21.MyClass();
        Exercise_4_22.Exercise_4_22_.MyClass myclass_0 = 				// 可以写注释
		new Exercise_4_22.Exercise_4_22_.MyClass();
		// c#支持换行输入,不需要斜杆\\,斜杆\\反而会报错
    

  • 总结特性

    1. 关键字namespace相当于给作用域内的命名加个前缀,用于分割代码块,避免定义重名之类的问题。
    2. 前缀加命名太长了,所以可以使用关键字using导入命名空间。

    简单理解就是,又 把代码块的内容拷贝了一份

    如果两份拷贝内容有重名,编译报错。如果拷贝内容和原有内容有重名,不拷贝。

    1. 支持嵌套创建命名空间,使用方法一样。

导入静态类

  • 静态类也可以使用using static关键字组合导入,导入后静态类的内容就可以不用加前缀类名使用。类似导入命名空间。

脚本③

public static class MyClass_s			// 静态类

	static MyClass_s()					// 静态构造函数,不能写访问修饰符
	
		Debug.Log("Exercise_4_23;");
	
	
	public static int num = 423;		// 静态属性

脚本④:(添加内容)

using static MyClass_s;		// 直接访问静态类的内容,如果有命名空间加前缀。
							// 这不算访问静态类,不调用构造函数。
/* ... */
Debug.Log("Exercise_4_24;"+num);	// 直接访问静态类属性,同时第一次访问静态类,调用构造函数。
  • 总结特点:注意,一开始导入时不会调用构造函数的。

起别名

  • using还支持给命名空间、类、静态类,起别名。不能给类中的属性方法起别名,编译报错。

脚本④:(添加+修改)

using MyClass_0 = Exercise_4_22.Exercise_4_22_;			// 起别名,给命名空间起别名
using MyClass_1 = Exercise_4_22.Exercise_4_22_.MyClass;	// 起别名,给命名空间的类起别名
using MyClass_2 = MyClass_s;							// 给静态类起别名,如果有命名空间可加
/* ... */
MyClass_0.MyClass myclass_0 = new MyClass_0.MyClass();	// 访问命名空间的类
MyClass_1 myclass_1 = new MyClass_1();					// 同上,直接访问类
Debug.Log("Exercise_4_24;"+MyClass_2.num);				// 使用静态类的别名访问
  • 总结特点:如上注释为所求。

using语句:将实例与代码绑定

在菜鸟教程看到的,没遇见过,暂时忽略稀有用法。

[unity]c#中级编程-08-接口(代码片段)

[Unity中文课堂教程]C#中级编程-08-接口原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》《C#接口(Interface)|菜鸟教程(runoob.com)》内容短小精悍简练,每... 查看详情

[unity]c#中级编程-02-静态(代码片段)

[Unity中文课堂教程]C#中级编程-02-静态原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》内容短小精悍简练,每节只有几分钟。很适合用来预习和复习。主要代... 查看详情

[unity]c#中级编程-05-构造函数/封装/继承(代码片段)

[Unity中文课堂教程]C#中级编程-05-构造函数/封装/继承原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》《C#继承|菜鸟教程(runoob.com)》内容短小精悍简练,每节只... 查看详情

[unity中文课堂教程]c#中级编程-01-可读可写属性(代码片段)

[Unity中文课堂教程]C#中级编程-01-可读可写属性原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》内容短小精悍简练,每节只有几分钟。很适合用来预习和复习... 查看详情

[unity]c#中级编程-03-重载(代码片段)

[Unity中文课堂教程]C#中级编程-03-重载原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》《C#多态性|菜鸟教程(runoob.com)》(函数重载)内容短小精悍简练࿰... 查看详情

[unity]c#中级编程-09-扩展方法(代码片段)

[Unity中文课堂教程]C#中级编程-09-扩展方法原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》内容短小精悍简练,每节只有几分钟。很适合用来预习和复习。扩... 查看详情

[unity]c#中级编程-04-泛型/构造函数/ref(代码片段)

[Unity中文课堂教程]C#中级编程-04-泛型/构造函数/ref原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》《C#泛型(Generic)|菜鸟教程(runoob.com)》《C#泛型讲解_泛... 查看详情

[unity]c#中级编程-07-多态(代码片段)

[Unity中文课堂教程]C#中级编程-07-多态原教程视频地址:《[Unity中文课堂教程预告片]C#中级编程_哔哩哔哩_bilibili》《C#中级编程-Unity中文课堂(u3d.cn)》《C#多态性|菜鸟教程(runoob.com)》,菜鸟教程中提到多态,但指的是方... 查看详情

Unity c# 3D错误CS0116:命名空间不能直接包含成员作为字段或方法[重复]

...但错误仍然存​​在,任何帮助将不胜感激,我相对对c#编程 查看详情

unity之c#中级开发

@作者:SYFStrive 查看详情

c#新手编程对“命名空间“的理解与“用途“

...篇文章适合新手…因为我刚学习的时候就遇到过刚刚学习编程你是否经历过网上借鉴的代码别人可以运行我的确是波浪线?这就是因为没有导入“命名空间”导致的那么什么是命名空间?在项目最前面的就是命名空间使用using... 查看详情

c#新手编程对“命名空间“的理解与“用途“

...篇文章适合新手…因为我刚学习的时候就遇到过刚刚学习编程你是否经历过网上借鉴的代码别人可以运行我的确是波浪线?这就是因为没有导入“命名空间”导致的那么什么是命名空间?在项目最前面的就是命名空间使用using... 查看详情

用c#的编程,老是提示:命名空间“system”中不存在类型或命名空间名称“stream”。请问哪里错了?

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingWindowsApplication2;usingSystem.Stream;namespaceWindowsApplication2publicpartialclassForm1:FormpublicForm1()InitializeComponent();privatevoidFor... 查看详情

[unity]c#中级编程-06-隐藏/虚拟/抽象/覆写/密封(代码片段)

[Unity中文课堂教程]C#中级编程-06-隐藏/虚拟/抽象/覆写/密封参考《c语言中文网》有很多实用的知识点《C#base关键字:调用父类成员方法(biancheng.net)》《C#virtual关键字详解(biancheng.net)》继续上一篇笔记——继承没补充的细节。... 查看详情

C# 命名空间别名 - 有啥意义?

】C#命名空间别名-有啥意义?【英文标题】:C#namespacealias-what\'sthepoint?C#命名空间别名-有什么意义?【发布时间】:2010-10-0501:14:04【问题描述】:人们会在何时何地使用命名空间别名usingsomeOtherName=System.Timers.Timer;在我看来,这只... 查看详情

找不到 XmlTextReader/XmlNodeType 命名空间,如何解决?

】找不到XmlTextReader/XmlNodeType命名空间,如何解决?【英文标题】:XmlTextReader/XmlNodeTypenamespacecouldnotbefound,howtofix?【发布时间】:2015-12-2320:18:32【问题描述】:我的错误在C#中,我知道为什么它告诉我找不到XmlTextReader命名空间。我... 查看详情

在C#中获取命名空间中的类列表[重复]

...te]【发布时间】:2010-12-2213:58:19【问题描述】:我需要以编程方式获取给定命名空间中所有类的List。如何在C#中实现这一点(反射?)?【问题讨论】:当一个问题被标记为重复并且没有引用原始问题时,这是多么令人讨厌。【... 查看详情

24.2网络编程基础

    使用C#进行网络编程时,通常要用到:          System.Net 命名空间、          System.Net.Sockets 命名空间、          System.Net.Mail 命名空间。24.2.1 System.Net命名空间及相... 查看详情