同一个项目中创建的类用同一个命名空间,也就是说在同一个命名空间中。
那么命名空间究竟是怎样的一种存在哪?
我们可以把命名空间看作是JAVA中的包,一个项目类似为一个JAVA包,只不过C#中不是以文件夹来划分包,也不是以文件来划分类。
文件成为一种分类的容器,一个文件中可以有多个类,文件名也是随意的。两个类是不是在一个“包”中是以命名空间来决定的。
命名空间的作用和java中的包一样,用于划分和管理项目结构和组织类。
同一命名空间中的名字可以相互调用,要调用不同命名空间中的名字就要引入。
例如一般的类都要using System,这就是引入System命名空间。这样才能在类中用System空间中的名字,例如Console类。
当一个项目引用的命名空间在另一个项目中时,就要先在项目中添加另一个项目的引用。(可以参考 实例:两个项目的欢迎程序)
同一文件中的命名空间中可以有多个类。
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { public class Program { static void Main(string[] args) { string name = MyConsole.ReadString("输入你的姓名:"); MyConsole.WriteString(name + "欢迎来到C#的世界"); Console.ReadLine(); } } public class MyConsole { public static string ReadString(string msg) { Console.Write(msg); return System.Console.ReadLine(); } public static void WriteString(string msg) { System.Console.WriteLine(msg); } } }
同一个文件中可以多次定义命名空间。
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { public class Program { static void Main(string[] args) { string name = MyConsole.ReadString("输入你的姓名:"); MyConsole.WriteString(name + "欢迎来到C#的世界"); Console.ReadLine(); } } } namespace ConsoleApplication1 { public class MyConsole { public static string ReadString(string msg) { Console.Write(msg); return System.Console.ReadLine(); } public static void WriteString(string msg) { System.Console.WriteLine(msg); } } }
命名空间的名字也是可以自己定义的。同一个项目中同一个或不同的文件中可以用不同的命名空间。
using System; using System.Collections.Generic; using System.Text; using qq; namespace ConsoleApplication1 { public class Program { static void Main(string[] args) { string name = MyConsole.ReadString("输入你的姓名:"); MyConsole.WriteString(name + "欢迎来到C#的世界"); Console.ReadLine(); } } } namespace qq { public class MyConsole { public static string ReadString(string msg) { Console.Write(msg); return System.Console.ReadLine(); } public static void WriteString(string msg) { System.Console.WriteLine(msg); } } }
命名空间可以自己设定。
同一命名空间的名字可以直接调用,不用using。
同一文件中可以有多个命名空间。若要相互引用,要用using引入。
同一项目中可以有多命名空间,若要相互引用,要用using引入。
不同项目中可以用同一个命名空间,若要相互引用,要加项目引用,但不用using引入。