命名空间和using使用

什么使用命名空间(1)

    C#采用的是单一的全局变量命名空间,若有两个变量或函数的名称完全相同,就会出现冲突.

     如定义了一个用户名变量userName,可能在调用某个库文件或别的程序代码中也定义了相同的变量名,此时便出现了冲突。

     命名空间就是为解决C#中变量、函数的命名冲突而服务的。可以将同一名称的变量定义在不同的命名空间中。

    如:张家有电视机,李家也有电视机,王家也有电视机,但因为它们属于不同的家庭,使用时只需将它们所属的家庭作为前缀名即可。

namespaceTcl

{

    class Monitor

    {

        public void ListModels()

        {

            Console.WriteLine("供应Tcl以下型号的显示器:");

            Console.WriteLine("14\",15\" \n");

        }

    }

}

namespaceCH

{

    public class Monitor

    {

        public void ListModelStocks()

        {

            Console.WriteLine("以下是 长虹 显示器的规格及其库存量:");

            Console.WriteLine("14\"=1000,15\"=2000, 17\"=3000");

        }

        static void Main(string[] args)

        {

            Tcl.MonitorobjTcl =new Tcl.Monitor();

            MonitorobjCh= new Monitor();//不指定命名空间,使用CH.Monitor类

            objTcl.ListModels();

            objCh.ListModelStocks();

        }

    }

}

为什么使用using语句(2)

     创建了命名空间后,如果命名空间中嵌套比较深,在外部引用它们时是十分不方便的,书写冗长.可以使用using语句来简化对它们的访问,

using语句的意思就好比是“我们需要对这个命名空间中的变量,所以不要每次总是要求对它们分类”。

什么情况下使用命名空间的别名

       使用using语句可以简化对命名空间的引用,然而某些命名空间中很可能包含相同名称的类,在某些情况下却恰恰需要用到这些同名的类。

例如在.NET Framework类库中存在3个Timer类:System.Timer.Timer、System.Threading.TimerSystem.Windows.Forms.Timer,我们需要使

用System.Timer.Timer在后台以固定的时间间隔检查所有应用程序或系统的状态,而使用System.Windows.Forms.Timer来在用户界面中显示一个

简单的动画,这时,开发人员就必须在类前面加上命名空间。

别名 解决代码冗长问题

using Class1 = Namespace1.Test;  //别名到类

using Ns2=Namespace2.NameSpace3.NameSpace4;  //别名到命名空间

UsingClass2=Namespace2.Namespace3.Namespce4.Test

namespaceNamespace1                                   

{

    class Test

    {

        public Test()

        {

            System.Console.WriteLine("Hello from Namespace1.Test");

        }

    }

}

classMainClass

{

    public static void Main()

  {

  Class1 obj1=new Class1();

  Ns2.Test obj2=new Ns2.Test();

  System.Console.Read();

  }

namespace Namespace2

{

   …

   namespace Namespace3

   {

  …

          namespace Namespace4

          {

  …

                class Test

                {

                       public Test()

                       {

            System.Console.WriteLine

("Hello from Namespace2.Test");

                       }

               }

         }

   }

}

别名解决问题冲突

namespaceConsoleApplication10

{

      

    namespace CH

    {

        public class Monitor

        {

            public void ListModelStocks()

            {

                Console.WriteLine("以下是 长虹 显示器的规格及其库存量:");

                Console.WriteLine("14\"=1000,15\"=2000, 17\"=3000");

            }          

        }

    }

    namespace Tcl

    {

        class Monitor

        {

            public void ListModels()

            {

                Console.WriteLine("供应Tcl以下型号的显示器:");

                Console.WriteLine("14\",15\" \n");

            }           

        }

    }

}

namespacetest

{

    using ConsoleApplication10;

   

    class Test

    {

        public void Func()

        {

           

             Monitor m = new Monitor();

       }

    }

}



展开阅读全文

没有更多推荐了,返回首页