【C#小知识】namespace和using的使用

这篇文章主要记录一下namespace和using的主要作用和使用方法。

 

namespace

namespace主要有两方面的作用:1.用于类和方法的组织与范围限定。2.控制类和方法的使用范围。

namespace NameSpace1
{
	public class Class1
	{
	}
}

上面的示例将Class1限定为NameSpace1命名空间范围内,如果我们需要使用Class1类型则需要使用它的完全限定名。

class Class2
{
    NameSpace1.Class1 class1 = new NameSpace1.Class1();
}

命名空间和类一样也是可以进行嵌套的,如下所示:

namespace NameSpace1
{
	namespace NameSpace2
	{
		class Class2
		{
		}
	}
}

namespace NameSpace1.NameSpace2
{
	class Class3
	{
	}
}

Class2和Class3都限定为NameSpace1.NameSpace2命名空间内,这两种写法的效果是一样的,但在我们实际编码中更常用下面一种的写法,这样会让我们的代码更加简洁。

 

using

在使用命名空间内的类型时除了直接使用完全限定名之外,还可以使用using来允许使用命名空间内的类型。

using System;

class Program
{
	static void Main(string[] args)
	{
		Console.ReadKey();
	}
}

上面的示例通过using System;我们可以使用到System命名空间下的Console类。

 

接下来介绍一下using的静态类型,使用using的静态类型可以直接访问到类型的静态成员,而无需限定使用类型名称进行访问。

using static System.Console;

class Program
{
	static void Main(string[] args)
	{
		ReadKey();
	}
}

因为ReadKey()是Console的静态成员,所以可以通过using static System.Console;的方式直接调用。

 

最后再来介绍一下通过using来使用命名空间的别名。先看示例:

namespace NameSpace1
{
	class Class1
	{
	}
}

namespace NameSpace2
{
	class Class1
	{
	}

	class Class2
	{
		Class1 class1 = new Class1();    //NameSpace2.Class1
	}

	class Class3
	{
		NameSpace1.Class1 class1 = new NameSpace1.Class1();
	}
}

上面的示例可以看到NameSpace1和NameSpace2两个命名空间中有两个都名为Class1的类,首先这样的写法是完全合法的,但这两个是名字相同的两个不同的类。因为命名空间作用域的关系Class2中创建的Class1的完全限定名是NameSpace2.Class1,而如果要创建NameSpace1.Class1则只能像Class3中一样写出其完全限定名。在实际开发过程中可能命名空间会有更多层的嵌套,那么我们在写完全限定名的时候就非常繁琐,使用命名空间的别名就会方便很多。如下所示:

using Alias = NameSpace1.Class1;

namespace NameSpace1
{
	class Class1
	{
	}
}

namespace NameSpace2
{
	class Class1
	{
	}

	class Class2
	{
		Class1 class1 = new Class1();   //NameSpace2.Class1
	}

	class Class3
	{
		Alias class1 = new Alias();    //NameSpace2.Class1
	}
}

通过定义命名空间别名Alias可以让原来需要使用完全限定名的地方代码更加简洁。

 

关于namespace和using的小知识点就先介绍到这里了,更多细节可以去查Microsoft的官方文档。关于C#所有细节都可以通过官方文档来查询,毕竟那是一手资料嘛。下面附上关于namespace和using的官方文档连接,喜欢的小伙伴可以再去多看看。

namespace:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/namespaces/using-namespaces

using:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/using-directive

 

 

 

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值