ホームページ >バックエンド開発 >C++ >C# で非静的メンバーにアクセスするときに発生する「オブジェクト参照が必要です」エラーを解決する方法

C# で非静的メンバーにアクセスするときに発生する「オブジェクト参照が必要です」エラーを解決する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 12:00:21685ブラウズ

How to Resolve

非静的メンバー アクセスの「オブジェクト参照が必要です」エラーの解決

別の関数でタイマー コールバックを呼び出すと、「オブジェクト参照が必要」というエラーが発生する場合があります非静的フィールド、メソッド、またはプロパティにアクセスするには参照が必要です...」 これは、静的メソッドまたは静的メソッド内の非静的クラス メンバーにアクセスするときに発生します。

これを解決するには、次の 2 つのオプションがあります:

  1. コールバックとメンバー変数を静的として宣言します:

    • タイマーのコールバックとメンバー変数を静的にします。 in:
    public static void Main (string[] args)
    {
        Timer _timer = null;
        static TimeSpan _millisecs;
        ...
    }
    • これにより、オブジェクト インスタンスなしでメンバー変数とコールバックにアクセスできるようになります。
  2. インスタンスの作成のクラス:

    • 非静的メンバーを含むクラスのオブジェクトをインスタンス化します:
    MainClass instance = new MainClass();
    btn.Clicked += instance.StartClick;
    btn_stop.Clicked += instance.StopClick;
    • コールバックは非静的メンバーにアクセスできるようになりましたインスタンス オブジェクトを介したメンバー。

これらのオプションのどちらを選択するかは、アプリケーションの要件によって異なります。グローバルな状態管理が優先される場合は、静的メンバーを使用できます。あるいは、インスタンスを作成すると、テスト容易性とカプセル化が向上します。

エラー メッセージの原因を理解することは、情報に基づいた意思決定に役立ちます。このエラーは、非静的メンバーにはアクセスするためにオブジェクト インスタンスが必要ですが、静的メンバーにはその必要がないために発生します。

以上がC# で非静的メンバーにアクセスするときに発生する「オブジェクト参照が必要です」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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