场景:
假设我想定义自己的类.
public class Person
{
}
Run Code Online (Sandbox Code Playgroud)
我希望将它放在命名空间系统中.
注意:我没有using System在顶部包含指令' '.
namespace System
{
public class Person
{
public void Display()
{
Console.WriteLine("I am mine");
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我没有using System;在顶部包含指令,但我仍然能够访问System.Console.WriteLine我的方法,因为我声明的命名空间是System.
这怎么可能?怎么样?
如果声明名称空间Foo.Bar.Baz,则在从该名称空间声明中引用类型时Foo,将搜索该层次结构(,Foo.Bar和Foo.Bar.Baz)中的每个名称空间:
namespace Foo.Bar.Baz
{
class Test
{
static void Main()
{
// This will search for Foo.Bar.Baz.SomeType,
// Foo.Bar.SomeType, Foo.SomeType, SomeType,
// in that order
SomeType.StaticMethod();
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅C#3.0语言规范的第3.8节.
但是,我希望你没有认真考虑使用它作为避免添加使用指令的方法.在System命名空间层次结构中创建自己的类型是一个非常糟糕的主意.