在 C# 中,如果你这样做,它会编译:
namespace Name
{
public class Test
{
}
public class TestUse
{
private global::Name.Test test;
}
}
但是,如果您在 VB.NET 中尝试相同的操作,它不会:
Namespace Name
Public Class Test
End Class
Public Class TestUse
Private test As Global.Name.Test
End Class
End Namespace
我得到(取决于我尝试使用“测试”的方式)“‘Name’不是‘
我制作了一个自定义工具,它使用 CodeDom 为 C# 和 VB.NET 生成代码。这就是为什么上面两个修复都不可行的原因:我不能指望我的用户有一个空的根命名空间,而且我不想在我的代码生成中使用特定于 VB 的技巧(有点破坏使用语言中立工具的目的,不是吗?),例如选择“根命名空间”(不是我知道如何脱离我的头脑)并将其包含在我的代码生成中。
我也不想遗漏全局修饰符,因为它可以保护工具免受用户为生成的输出选择错误名称的影响。有人对我应该如何处理这个问题有建议吗?
最佳答案
鉴于您无论如何都必须为任何一种语言执行不同的代码生成任务,这只是生成该代码的差异中的又一滴水。
与其他实现细节相比,乍一看,插入默认 namespace 的 VB 特定技巧的编码并不是什么大问题。
祝你好运!
关于c# - Visual Basic.NET 与 C# 中命名空间的区别以及如何处理它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894753/