【发布时间】:2014-10-28 05:48:43
【问题描述】:
我有一个 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 不 编译)?
【问题讨论】:
-
你的VB项目的根命名空间是否与C#命名空间冲突? C# 命名空间是否与某些 System 命名空间冲突?
-
一个具体的例子很重要。当您使用
Globals时,编译器会忽略源代码文件中的任何Imports指令。然后您必须输入 full 类型名。这是 RootNamespace.NamespaceName.Typename。 RootNamespace 名称在 Project + Properties 的 Application 选项卡中设置。 -
每个项目的RootNamespace都不一样。仅使用一个
Globals并不会使编译器忽略所有Imports似乎。我创建了一个新的简单 VB 项目和一个具有不同命名空间的 C# 和 VB 类库,并且都定义了 Class1。在这种情况下不需要全局(一切正常)。我无法区分这和我的解决方案。 -
核心 VB 项目中引用其他项目的根命名空间是什么?
-
核心 VB 项目:“仪器”,参考项目:C#:“公司名称”,VB:“实用程序”。冲突的类分别是“Companyname.CompanynameSystem.Blade”、“Utilities.Blade”
标签: c# .net vb.net namespaces