在C#中,如果我创建一个没有命名空间的类,那么在尝试实例化类时我会使用什么命名空间?
例如,假设main是......
namespace NamespaceTests
{
class Program
{
static void Main(string[] args)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
...并假设我的无命名空间类是......
public class test
{
public string SayHello()
{
return "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
...并假设我有一个相同名称的另一个类,但具有默认命名空间...
namespace NamespaceTests
{
public class test
{
public string SayHello()
{
return "Hello Moon...";
}
}
}
Run Code Online (Sandbox Code Playgroud)
...我如何修改main以包含无名称空间类的实例,并调用'SayHello'来检索消息"Hello World!"?具体来说,我如何完全限定类'test'的无名称空间实例,特别是考虑到我可能有另一个类也称为'test'但具有命名空间,所以我需要区分...
its*_*e86 11
未在命名空间中定义的类型将位于全局命名空间中.
全局上下文关键字,当它出现在::运算符之前时,引用全局命名空间,它是任何C#程序的默认命名空间,否则是未命名的.
以下示例显示如何使用全局contextual关键字指定在全局命名空间中定义类TestApp:
C# class TestClass : global::TestApp { }
Run Code Online (Sandbox Code Playgroud)
除了上述答案之外,重要的是要注意,所有类型,无论其声明位置如何,都有一个“完全限定名称”,该名称以“global::”开头
摘自“O'Relly. C# in a Nutshell”:
所有类型名称都在编译时转换为完全限定名称。中间语言 (IL) 代码不包含未限定或部分限定的名称