如何直接在命名空间

时间:2017-03-16 12:28:44

标签: c# namespaces

我试图找出你是否可以拥有下面的东西:

namespace myNamespace
{
    public string myString;
}

我找不到任何可以解释这一点的东西,可能是因为我搜索关键字很糟糕。谁能告诉我是否有办法做到这一点?

如果 可能,我可能已经搞砸了。无论哪种方式,我都想知道。

我想知道如何做到这一点,因为我希望能够在整个命名空间中访问它,而不必在我不同的类中使用.myString。这在我看来似乎是合乎逻辑的,但显然不可能。

1 个答案:

答案 0 :(得分:4)

您无法在namespace

中直接声明字段
    // doesn't compile
    namespace myNamespace
    {
        public string myString; // <- syntax error
    }

但您可以在using static(C#6.0 +)的帮助下模仿这样的语法:

    namespace MyLibrary 
    {
        // put myString within a static class
        public static class MyStorage 
        {
            // let turn field into property
            public static string myString {get; set;}
        }
    }

然后使用带有using static的静态类:

    // please, notice "using static"
    using static MyLibrary.MyStorage;

    namespace myNamespace
    {
        public class MyClass 
        {
            public void MyMethod() 
            {
                myString = "abc"; // as if it has been declared in the namespace

                string test = myString;  
                ...
            }
        } 

    }