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

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

DDD
リリース: 2025-02-02 17:51:11
オリジナル
673 人が閲覧しました

Why Does

エラー: "cs0120:非定位フィールド、メソッド、またはプロパティ 'foo'" "

シナリオにはオブジェクト参照が必要です:

>

次のコードを検討してください:

1

2

3

4

5

private static void SumData(object state)

{

    // Calling a non-static member from a static method

    setTextboxText(result);

}

ログイン後にコピー

説明:

非静的メンバーにアクセスしようとするとエラーが発生します(cs0120 "が発生します(静的コンテキストからのフィールド、方法、またはプロパティ)。この場合、SettextboxtextメソッドはForm1クラスの非静的メンバーであり、静的SumDataメソッドからアクセスできません。

非静的なメンバーを静的にする:

  • フォームの静的シングルトンを使用します:

1

2

3

4

static void setTextboxText(int result)

{

    // Implementation details

}

ログイン後にコピー
  • form1のインスタンスを呼び出し方法に渡す:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

class Form1

{

    public static Form1 It;

 

    public Form1()

    {

        It = this;

    }

 

    private static void SumData(object state)

    {

        Form1.It.setTextboxText(result);

    }

}

ログイン後にコピー

1

2

3

4

private static void SumData(Form1 form, object state)

{

    form.setTextboxText(result);

}

ログイン後にコピー
  • 追加情報:

1

2

3

4

private void SumData(object state)

{

    setTextboxText(result);

}

ログイン後にコピー

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート