c#staticメソッドは、staticメンバー以外のエラーと解にアクセスできません
次のコードフラグメントは、この問題を示しています:
問題の原因
<code class="language-csharp">namespace WindowsApplication1 { public partial class Form1 : Form { ... private static void SumData(object state) { ... setTextboxText(result); // 错误:非静态字段、方法或属性 } } }</code>
エラー情報は、静的な方法が非スタットメンバーを呼び出そうとすることを示しています
。静的メソッドは静的メンバーのみにアクセスすることができ、非スタットメンバーは属するオブジェクトへの参照を必要とします。
SumData
solution setTextboxText
このエラーを解決する方法はたくさんあります:
setTextboxText
<code class="language-csharp">public static void setTextboxText(int result)</code>
を呼び出します
setTextboxText
Form1
setTextboxText
コールメソッドでA<code class="language-csharp">class Form1 { public static Form1 Instance; // 单例 ... private static void SumData(object state) { ... Instance.setTextboxText(result); } }</code>
Form1
Instance
インスタンスが既に存在する場合、この方法は適用できない場合があります。 Instance = this;
Form1
<code class="language-csharp">private static void SumData(object state) { ... Form1 frm1 = new Form1(); frm1.setTextboxText(result); }</code>これは通常、コードのカプセル化とメンテナンスを維持するため、最良のソリューションです。
Form1
詳細については、MSDNドキュメントを参照してください。
以上が静的メソッドがC#で非静的メンバーにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。