ITEEDU

命名空间namespace

同一个项目中创建的类用同一个命名空间,也就是说在同一个命名空间中。

那么命名空间究竟是怎样的一种存在哪?

我们可以把命名空间看作是JAVA中的包,一个项目类似为一个JAVA包,只不过C#中不是以文件夹来划分包,也不是以文件来划分类。

文件成为一种分类的容器,一个文件中可以有多个类,文件名也是随意的。两个类是不是在一个“包”中是以命名空间来决定的。

命名空间的作用

命名空间的作用和java中的包一样,用于划分和管理项目结构和组织类。

同一命名空间中的名字可以相互调用,要调用不同命名空间中的名字就要引入。

例如一般的类都要using System,这就是引入System命名空间。这样才能在类中用System空间中的名字,例如Console类。

当一个项目引用的命名空间在另一个项目中时,就要先在项目中添加另一个项目的引用。(可以参考 实例:两个项目的欢迎程序

几种命名空间的例子

同一文件中的命名空间中可以有多个类。

Program.cs

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);
        }
    }

}

同一个文件中可以多次定义命名空间。

Program.cs

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);
        }
    }
}

命名空间的名字也是可以自己定义的。同一个项目中同一个或不同的文件中可以用不同的命名空间。

Program.cs

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引入。