.NET 程序集:别名、加载与命名机制深度解析
1. 外部别名(Extern Aliases)
在 C# 编程中,当存在多个同名类型时,C# 通常会使用最近作用域中的类型。例如,本地定义的System.String可能会隐藏同名的内置类型。虽然引入这种名称冲突不是明智之举,但 C# 提供了一种机制来指定所需的程序集,即定义外部别名。
与使用using关键字定义的类型别名不同,外部别名可以区分不同程序集中具有相同完全限定名的类型。定义外部别名的步骤如下:
1. 在解决方案资源管理器中展开“引用”列表,选择一个引用。
2. 在“属性”面板中为该引用设置别名。
3. 在 C# 文件的顶部声明要使用的别名,示例如下:
extern alias A1; extern alias A2;设置好别名后,可以使用A1::或A2::加上完全限定名来限定类型名称,这样编译器就会使用与该别名关联的程序集中定义的类型。
.NET 允许存在同名类型,这并非是为了支持名称冲突,而是因为 .NET 将程序集作为类型的一部分。公共语言运行时(CLR)需要知道定义类型的程序集,以便在首次使用该类型的某个功能时能够找到该程序集。
2. 程序集加载(Loading Assemblies)
在解决方案资源管理器的项目“引用”部分,可能会看到大量的引用,不必担心这些引用会导致运行时加载不必要的