首頁 > 後端開發 > C++ > 當從靜態方法調用非靜態方法時,為什麼需要' CS0120:對象引用...”?

當從靜態方法調用非靜態方法時,為什麼需要' CS0120:對象引用...”?

DDD
發布: 2025-02-02 17:51:11
原創
587 人瀏覽過

Why Does

錯誤:“ cs0120:非靜態字段,方法或屬性'foo'“

>

>

private static void SumData(object state)
{
    // Calling a non-static member from a static method
    setTextboxText(result);
}
登入後複製
考慮以下代碼:

> >說明:

>>>當您嘗試訪問非靜態成員時,出現錯誤“ CS0120”(從靜態上下文中的字段,方法或屬性)。在這種情況下,setTextboxtext方法是form1類的非靜態成員,無法從靜態sumdata方法訪問。

    使非靜態成員靜態:
static void setTextboxText(int result)
{
    // Implementation details
}
登入後複製
    >
  • >使用form1的靜態單例:
>
class Form1
{
    public static Form1 It;

    public Form1()
    {
        It = this;
    }

    private static void SumData(object state)
    {
        Form1.It.setTextboxText(result);
    }
}
登入後複製
  • > >將form1的實例傳遞給調用方法:
private static void SumData(Form1 form, object state)
{
    form.setTextboxText(result);
}
登入後複製
>使調用方法non--靜態:
private void SumData(object state)
{
    setTextboxText(result);
}
登入後複製

  • 其他信息:
靜態成員只能訪問其他靜態成員。 >非靜態成員可以訪問靜態成員和非靜態成員。 如果在致電非靜態成員的呼叫期間沒有類的實例,則可以創建一個新實例或使用靜態單例來訪問非靜態成員。 >有關此錯誤的更多信息,請參閱MSDN。

以上是當從靜態方法調用非靜態方法時,為什麼需要' CS0120:對象引用...”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板