C# コード エラー: 「非静的フィールド、メソッド、またはプロパティにアクセスするにはオブジェクト参照が必要です」
提供されたコード スニペットは、静的メソッド から非静的メソッド にアクセスしようとしたため、Main()
クラス 2 (アルゴリズムの実装) GetRandomBits()
でエラーをスローします。
Main()
メソッドの Population[i].bits = GetRandomBits();
行でエラーが発生しました。問題は、GetRandomBits()
が静的メソッドであるのに対し、Program
クラスの非静的メソッドであることです。 Main()
解決策: 静的と非静的
解決策:
Program
を呼び出します。 GetRandomBits()
<code class="language-csharp">// 创建 Program 实例 Program p = new Program(); // 从实例访问非静态方法 Population[i].bits = p.GetRandomBits();</code>
GetRandomBits()
メソッド宣言の前に キーワードを追加して、static
メソッドを静的メソッドに変更します。 GetRandomBits()
<code class="language-csharp">public static string GetRandomBits() { // 在此处实现方法逻辑... }</code>
メソッドの目的によって異なります。 GetRandomBits()
がクラスの他の非静的メンバーにアクセスする必要がある場合は、最初のメソッド (インスタンスの作成) を使用する必要があります。 GetRandomBits()
がクラスの非静的メンバーにアクセスする必要がない場合は、2 番目のアプローチ (静的にする) の方が簡単です。 静的メソッドを過度に使用すると、コードのテストや保守がしにくくなる可能性があることに注意してください。 GetRandomBits()
以上がC# で静的メソッドから非静的メソッドを呼び出すと「オブジェクト参照が必要です」と表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。