オブジェクト指向プログラミングでは、インスタンス変数やメソッドなどの非静的メンバーには、オブジェクト インスタンスが必要です。アクセスされました。最初にオブジェクトを作成せずにこれらの非静的メンバーにアクセスしようとすると、「非静的メンバーにアクセスするにはオブジェクト参照が必要です。」というエラーが発生します。
このエラーを解決する 1 つの方法は、影響を受けるメンバーを静的にすることです。静的メンバーは、個々のオブジェクトではなく、クラス自体に関連付けられます。これは、オブジェクト インスタンスなしでアクセスできることを意味します。
たとえば、指定したコード スニペットでは、StartClick メソッドと StopClick メソッドは非静的です。このエラーを修正するには、これらのメソッドを次のように変更できます。
public static void StartClick(object obj, EventArgs args) {} public static void StopClick(object obj, EventArgs args) {}
ただし、これによりアプリケーションにグローバルな状態が導入されることになり、一般的に良い方法とは考えられていません。
エラーを解決するもう 1 つの方法は、クラスのインスタンスを作成することです。これにより、インスタンス参照を通じて非静的メンバーにアクセスできるようになります。
たとえば、StartClick メソッドと StopClick メソッドにアクセスする前に、次のコードを追加できます。
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
インスタンスを作成することによってMainClass の、非静的メンバーへのアクセスに使用できるオブジェクト参照があります。
静的メンバーまたはオブジェクト インスタンスを使用するかどうかは、アプリケーションの特定の要件によって異なります。グローバル状態を回避することが重要な場合は、オブジェクト インスタンスを作成することをお勧めします。これにより、コードのカプセル化とテスト容易性が向上します。
以上が「オブジェクト参照が必要です」エラーの原因と解決方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。