ホームページ > バックエンド開発 > C++ > C# で静的メソッドから非静的メソッドを呼び出すと「オブジェクト参照が必要です」と表示されるのはなぜですか?

C# で静的メソッドから非静的メソッドを呼び出すと「オブジェクト参照が必要です」と表示されるのはなぜですか?

DDD
リリース: 2025-01-22 05:24:16
オリジナル
193 人が閲覧しました

Why Does

C# コード エラー: 「非静的フィールド、メソッド、またはプロパティにアクセスするにはオブジェクト参照が必要です」

提供されたコード スニペットは、静的メソッド から非静的メソッド にアクセスしようとしたため、Main()クラス 2 (アルゴリズムの実装) GetRandomBits() でエラーをスローします。

Main() メソッドの Population[i].bits = GetRandomBits(); 行でエラーが発生しました。問題は、GetRandomBits() が静的メソッドであるのに対し、Program クラスの非静的メソッドであることです。 Main()

解決策: 静的と非静的

  • 非静的メソッド: クラスのインスタンス (オブジェクト) から呼び出す必要があります。
  • 静的メソッド: は、インスタンスを作成せずにクラス名から直接呼び出すことができます。

解決策:

  1. インスタンスの作成: クラスのインスタンスを作成し、そのインスタンスから Program を呼び出します。 GetRandomBits()
<code class="language-csharp">// 创建 Program 实例
Program p = new Program();

// 从实例访问非静态方法
Population[i].bits = p.GetRandomBits();</code>
ログイン後にコピー
  1. を静的にする: GetRandomBits()メソッド宣言の前に キーワードを追加して、static メソッドを静的メソッドに変更します。 GetRandomBits()
<code class="language-csharp">public static string GetRandomBits()
{
    // 在此处实现方法逻辑...
}</code>
ログイン後にコピー
どのメソッドを選択するかは、プログラムの設計と

メソッドの目的によって異なります。 GetRandomBits() がクラスの他の非静的メンバーにアクセスする必要がある場合は、最初のメソッド (インスタンスの作成) を使用する必要があります。 GetRandomBits() がクラスの非静的メンバーにアクセスする必要がない場合は、2 番目のアプローチ (静的にする) の方が簡単です。 静的メソッドを過度に使用すると、コードのテストや保守がしにくくなる可能性があることに注意してください。 GetRandomBits()

以上がC# で静的メソッドから非静的メソッドを呼び出すと「オブジェクト参照が必要です」と表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート