namespace
namespace(命名空间/名称空间)提供了一种组织相关类和其他类型的方式。
和文件或组件不同,namespace是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包含在namespace中,在其他地方访问的时候便可通过namespace.yourClass访问此namespace下的类。
using System;
namespace CustomerPhoneBookApp
{
	public struct Subscriber
	{
		// Code for struct here..
	}
}
namespace和程序集assembly无关;同一个assembly可以有不同的namespace,也可以在不同的assembly有相同的namespace。
using
在访问类时,类的全名是namespace + class,名称比较长;可以通过using关键字引入namspace,然后在正文中就可以直接使用class。
如果using语句引用的两个namespace包含同名的类型,就必须使用完整的名称。
假如我们有个类叫NamespaceExample,在命名空间Wrox.ProCSharp.Basics和Wrox.ProCSharp.OOP下都有这个类,
在开头对这两个命名空间的都有引用,此时需要使用全名来告诉编译器我们究竟要用的是哪个命名空间下的NamespaceExample类:
using Wrox.ProCSharp.OOP;
using Wrox.ProCSharp.Basics;
namespace Wrox.ProCSharp
{
	class Test
	{
		static void Main()
		{
			Basics.NamespaceExample nSEx = new Basics.NamespaceExample();
			// do something with the nSEx variable.
		}
	}
}
namespace的别名alias
using关键字的另外一个用法就是为类和命名空间指定别名。如果namespace很长,有需要在代码中多次引用,可以为这个很长的namesapce指定一个短别名:
using alias = NamespaceName;
可以通过alias::className来进行定义和调用:
using System;
using Introduction = Wrox.ProCSharp.Basics;
class Program
{
	static void Main()
	{
		Introduction::NamespaceExample NSEx = new Introduction::NamespaceExample();
		Console.WriteLine(NSEx.GetNamespace());
	}
}
internal class Introduction
{
}
namespace Wrox.ProCSharp.Basics
{
	class NamespaceExample
	{
		public string GetNamespace()
		{
			return this.GetType().Namespace;
		}
	}
    
       internal class Introduction
	{
	}
}
原文:https://www.cnblogs.com/codesee/p/13033938.html