> c#cs0120錯誤:“非靜態字段,方法或屬性'foo'”
需要對象引用
當您嘗試從靜態上下文(例如靜態方法或靜態屬性)中訪問非靜態成員(字段,方法或屬性)時,此錯誤就會出現。
>
方案:
想像此代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public partial class MyForm : Form
{
private void MyMethod(object sender, EventArgs e)
{
UpdateLabel(someValue);
}
private void UpdateLabel(string text)
{
myLabel.Text = text;
}
}
|
登入後複製
>解決方案:
幾種方法可以解決以下方法:
> - 使成員靜態:如果適當,將訪問的成員更改為
>。 僅當成員不依賴特定於實例的數據時才能起作用。
static
1 2 3 4 | public static void UpdateLabel(string text)
{
}
|
登入後複製
> >單例模式:- 使用單例訪問類的實例。 當您僅需要一個類實例時,這是合適的。
>
在靜態方法中創建類的實例1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public partial class MyForm : Form
{
private static MyForm _instance;
public static MyForm Instance
{
get { return _instance ?? (_instance = new MyForm()); }
}
private MyForm() { }
private void MyMethod(object sender, EventArgs e)
{
Instance.UpdateLabel(someValue);
}
}
|
登入後複製
>
-
>
使調用方法非靜態:1 2 3 4 5 | private static void MyMethod(object sender, EventArgs e)
{
var form = new MyForm();
form.UpdateLabel(someValue);
}
|
登入後複製
進一步讀取:
1 2 3 4 | private void MyMethod(object sender, EventArgs e)
{
UpdateLabel(someValue);
}
|
登入後複製
>有關CS0120錯誤的Microsoft文檔以獲取更多詳細信息。
仔細考慮每個解決方案的含義。 選擇正確的方法取決於您的應用程序的設計和代碼的特定上下文。 >
以上是如何解決C#CS0120錯誤:'非靜態字段,方法或屬性需要對象引用”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!