2016-04-21 63 views
1

由於this.name不工作與像靜態類方法參數相同的名稱來訪問領域,我正在尋找一種方式來做到這一點。C#靜態類領域和參數同名

作爲一個例子我想這樣做:

static class test 
{ 
    private static string aString; 
    public static void method(string aString) 
    { 
     // aString (field) = aString (parameter) 
    } 
} 
+2

更好的選擇是將*參數*重命名爲'astring'。約定是參數以小寫字母開頭 –

回答

7

使用:

test.Astring = x; 

即替換與類名,測試在這種情況下。

+0

非常感謝! –

+0

*將參數重命名爲'aString'更好。否則,下一個問題將是「爲什麼我不能修改我的靜態字段?」 –

+0

@PanagiotisKanavos我同意 – Henningsson

0
static class test 
{ 
    private static string Astring="static"; 
    public static void method(string Astring) 
    { 
     string passedString = Astring; // will be the passed value 
     string staticField = test.Astring; // will be static 
    } 
} 

如果我們調用像test.method("Parameter");staticField將具有值staticpassedString的值將Parameter的方法。

關鍵字this表示該類的當前實例;靜態 領域無法通過實例來訪問你要訪問的靜態字段,而不是使用類 名。

注意: - 但請保重,而naming the variables。避免在同一班上給同一個名字。如果你像下面這樣定義類,最好:

static class test 
    { 
     private static string StaticAstring="static"; 
     public static void method(string passedAstring) 
     { 
      string staticField = StaticAstring; // will be static 
      string passedString = passedAstring; // will be the passed value 
     } 
    } 
+0

此刻你已經命名了你的局部變量。 –

+0

@JonSkeet:謝謝你提及,我糾正了 –