ホームページ >バックエンド開発 >C++ >「CS0120:オブジェクト参照が必要なのはなぜですか...」は、静的メソッドから非静的な方法を呼び出すときに発生するのですか?

「CS0120:オブジェクト参照が必要なのはなぜですか...」は、静的メソッドから非静的な方法を呼び出すときに発生するのですか?

DDD
DDDオリジナル
2025-02-02 17:51:11638ブラウズ

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);
    }
}
private static void SumData(Form1 form, object state)
{
    form.setTextboxText(result);
}
  • 追加情報:
private void SumData(object state)
{
    setTextboxText(result);
}

静的メンバーは他の静的メンバーのみにアクセスできます非静的なメンバーは静的メンバーと非静的メンバーの両方にアクセスできます。

以上が「CS0120:オブジェクト参照が必要なのはなぜですか...」は、静的メソッドから非静的な方法を呼び出すときに発生するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。