別の関数でタイマー コールバックを呼び出すと、「オブジェクト参照が必要」というエラーが発生する場合があります非静的フィールド、メソッド、またはプロパティにアクセスするには参照が必要です...」 これは、静的メソッドまたは静的メソッド内の非静的クラス メンバーにアクセスするときに発生します。
これを解決するには、次の 2 つのオプションがあります:
コールバックとメンバー変数を静的として宣言します:
public static void Main (string[] args) { Timer _timer = null; static TimeSpan _millisecs; ... }
インスタンスの作成のクラス:
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
これらのオプションのどちらを選択するかは、アプリケーションの要件によって異なります。グローバルな状態管理が優先される場合は、静的メンバーを使用できます。あるいは、インスタンスを作成すると、テスト容易性とカプセル化が向上します。
エラー メッセージの原因を理解することは、情報に基づいた意思決定に役立ちます。このエラーは、非静的メンバーにはアクセスするためにオブジェクト インスタンスが必要ですが、静的メンバーにはその必要がないために発生します。
以上がC# で非静的メンバーにアクセスするときに発生する「オブジェクト参照が必要です」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。