C#每日一课(二十一)

40 篇文章 1 订阅

C#命名空间
命名空间的目的是为了提供一种把一组名称与其他名称进行分隔的方式,保证在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。

  • 命名空间定义
    命名空间的定义是以关键字namespace开始,后跟命名空间的名称
namespace namespace_name
{
	//代码
}

为了调用支持命名空间的函数或变量,会把命名空间的名称置于前面

namespace_name.argument;

在Visual Studio当中新建C#控制台应用程序chapter16_001
声明类MyNamespace分别置于不同的命名空间当中

namespace namespace_one
{
    class MyNamesapce
    {
        public void Todo()
        {
            Console.WriteLine("Todo in namespace_one!");
        }
    }
}

namespace namespace_two
{
    class MyNamespace
    {
        public void Todo()
        {
            Console.WriteLine("Todo in namespace_two");
        }
    }
}

在Main方法中测试调用时需要使用命名空间进行区分:

namespace_one.MyNamesapce one = new namespace_one.MyNamesapce();
namespace_two.MyNamespace two = new namespace_two.MyNamespace();
one.Todo();
two.Todo();
Console.ReadKey();

编译运行后结果如下:
编译运行结果

  • using关键字
    使用using关键这,表明程序使用的是给定命名空间中的名称。
    比如我们在Main方法中对类Console的使用
    Console.ReadKey();
    实际上它的完全限定名称写法如下:
    System.Console.ReadKey();

对于上面的实例,可以using其中一个命名空间,比如:
using namespace_one;
那行在Main方法中对于使用namespace_one命名空间的可以省略命名空间名称
这个时候可以把 namespace_one.MyNamesapce one = new namespace_one.MyNamesapce();改为MyNamesapce one = new MyNamesapce();
编译运行后可以得到与上例中一样的结果。

  • 嵌套命名空间
    命名空间可以被嵌套定义,在一个命名空间内部再定义另一个命名空间
namespace namespace_outter
{
	//代码
	namespace namespace_inner
	{
		//代码
	}
}

当使用嵌套命名空间的时候可以使用.运算符进行访问
新增一个嵌套命名定间定义的类如下:

namespace namespace_outter
{
    class MyNamespace
    {
        public void Todo()
        {
            Console.WriteLine("namespace_outter!");
        }
    }
    namespace namespace_inner
    {
        class MyNamespace
        {
            public void Todo()
            {
                Console.WriteLine("namespace_inner!");
            }
        }
    }
}

使用using声明命名空间:using namespace_outter.namespace_inner;
在Main方法中加入如下代码进行测试:

namespace_outter.MyNamespace outter = new namespace_outter.MyNamespace();
namespace_outter.namespace_inner.MyNamespace inner = new namespace_outter.namespace_inner.MyNamespace();
MyNamespace inner2 = new MyNamespace();

outter.Todo();
inner.Todo();
inner2.Todo();

最终编译运行的结果如下:
编译运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值