我有一个VB.NET项目,它有对另一个VB.NET项目和一个C#项目的项目引用。每个引用的程序集都定义了一个具有相同名称的类,比如Class1
。在任何一种情况下,我都无法在没有名称空间设置的情况下访问它,即Dim c As Class1
,这将是不明确的。
编译器强迫我使用
Dim c As Global.C#Namespace.Class1
但是VB.NET类可以省略Global
Dim c As VBNamespace.Class1
在这种情况下,Global
标识符的作用是什么,为什么只有C#引用?为什么在VB.NET案例中没有必要(实际上Global.VBNamespace.Class
没有编译)?
答案 0 :(得分:0)
有一个遗留类与引用的C#命名空间名称同名。编译器将该标识符识别为类,而不是引用的程序集中的名称空间。
重要的是,编译器被名称空间和共享同名的类混淆了。