在C#中使用内置命名空间

SNA*_*SNA 1 .net namespaces

场景:

假设我想定义自己的类.

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.

这怎么可能?怎么样?

Jon*_*eet 8

如果声明名称空间Foo.Bar.Baz,则在从该名称空间声明中引用类型时Foo,将搜索该层次结构(,Foo.BarFoo.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命名空间层次结构中创建自己的类型是一个非常糟糕的主意.