由於this.name
不工作與像靜態類方法參數相同的名稱來訪問領域,我正在尋找一種方式來做到這一點。C#靜態類領域和參數同名
作爲一個例子我想這樣做:
static class test
{
private static string aString;
public static void method(string aString)
{
// aString (field) = aString (parameter)
}
}
由於this.name
不工作與像靜態類方法參數相同的名稱來訪問領域,我正在尋找一種方式來做到這一點。C#靜態類領域和參數同名
作爲一個例子我想這樣做:
static class test
{
private static string aString;
public static void method(string aString)
{
// aString (field) = aString (parameter)
}
}
使用:
test.Astring = x;
即替換此與類名,測試在這種情況下。
非常感謝! –
*將參數重命名爲'aString'更好。否則,下一個問題將是「爲什麼我不能修改我的靜態字段?」 –
@PanagiotisKanavos我同意 – Henningsson
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
將具有值static
和passedString
的值將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
}
}
此刻你已經命名了你的局部變量。 –
@JonSkeet:謝謝你提及,我糾正了 –
更好的選擇是將*參數*重命名爲'astring'。約定是參數以小寫字母開頭 –