2013-07-18 109 views
4

我有一個靜態成員:C#中靜態成員的別名?

namespace MyLibrary 
{ 
    public static class MyClass 
    { 
     public static string MyMember; 
    } 
} 

我要像這樣訪問:

using MyLibrary; 

namespace MyApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MyMember = "Some value."; 
     } 
    } 
} 

如何使MyMember訪問(不MyClass.)至MyApp剛剛加入using MyLibrary做?

回答

6

C#不允許您創建成員的別名,只有類型的別名。所以,做這樣的事情,在C#中的唯一方法是創建一個新的屬性,它是從範圍訪問:

class Program 
{ 
    static string MyMember 
    { 
     get { return MyClass.MyMember; } 
     set { MyClass.MyMember = value; } 
    } 

    static void Main(string[] args) 
    { 
     MyMember = "Some value."; 
    } 
} 

這不是一個真正的別名,但它實現了你要找的語法。

當然,如果你只訪問/上MyClass修改的成員,而不是分配給它,這可以簡化一下:

class Program 
{ 
    static List<string> MyList = MyClass.MyList; 

    static void Main(string[] args) 
    { 
     MyList.Add("Some value."); 
    } 
} 
+0

+1一個有效的解決方案。這種方法唯一的問題是,我必須爲每個類創建成員才能訪問靜態成員。 – dpp

+1

@dpp正確,這就是爲什麼這將是一個痛苦。傳統的MyClass.MyMember =「Some value」可能會更好。「' –

+0

@dpp此外,可變靜態字段不僅非常糟糕的代碼味道,它們可能是併發的噩夢。我建議儘可能避免使用它們。 –