C# では、通常、静的メソッドがクラスの非静的メンバーにアクセスしようとすると、「非静的フィールド、メソッド、またはプロパティにアクセスするにはオブジェクト参照が必要です」エラーが発生します。
この記事のエラーは、Main
メソッドの次のコード行で発生します:
<code class="language-c#">Population[i].bits = GetRandomBits();</code>
問題は、GetRandomBits
クラスで非静的メソッドとして宣言されている Program
メソッドにあります。ただし、Main
メソッドは静的メソッドとして定義されているため、クラスの静的メンバーのみにアクセスできます。
このエラーを解決するには 2 つの方法があります:
1. クラスのインスタンスを作成します:
静的メソッドは非静的メンバーに直接アクセスできません。静的メソッドから非静的メソッドまたはプロパティにアクセスするには、まずクラスのインスタンスを作成し、次にそのインスタンスを通じてメソッドを呼び出すか、プロパティにアクセスします。例:
<code class="language-c#">// 创建 Program 类的实例 Program p = new Program(); // 通过实例调用 GetRandomBits 方法 Population[i].bits = p.GetRandomBits();</code>
2. メソッドを静的にします:
また、Program
クラスで GetRandomBits
メソッドを宣言するときに static
キーワードを追加することで、静的メソッドにすることもできます。このようにして、静的 Main
メソッドは、インスタンスを作成せずに GetRandomBits
メソッドに直接アクセスできます。例:
<code class="language-c#">public static string GetRandomBits() { // 方法实现 }</code>
上記のいずれかの方法でエラーを解消し、Main
メソッドが GetRandomBits
メソッドに正しくアクセスできるようにすることができます。
以上がC# で「非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。