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

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

Linda Hamilton
リリース: 2025-01-22 17:46:11
オリジナル
538 人が閲覧しました

Why Does

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

C# では、「オブジェクト参照」というエラーが発生します。非静的フィールド、メソッド、またはプロパティには必要です...」というメッセージは、静的メソッドから非静的メンバーにアクセスしようとすると発生します。このエラーは、静的メソッドがインスタンス固有のデータにアクセスできないために発生します。

提供されたコード スニペットでは、静的として宣言されている「Main」メソッド内で問題が発生しますが、「volteado」メソッドと「siprimo」メソッドは非静的です。このエラーを解決するには、「siprimo」メソッドと「volteado」メソッドを静的として宣言する必要があります。 「static」キーワードを追加すると、静的「Main」メソッド内でこれらのメソッドに直接アクセスできます。修正されたコードは次のとおりです:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Write a number: ");
            long a = Convert.ToInt64(Console.ReadLine()); // a is the number given by the user

            long av = volteado(a); // av is "a" but swapped

            if (siprimo(a) == false && siprimo(av) == false)
                Console.WriteLine("Both original and swapped numbers are prime.");
            else
                Console.WriteLine("One of the numbers isn't prime.");
            Console.ReadLine();
        }

        private static bool siprimo(long a) // Declare siprimo as static
        {
            // Evaluate if the received number is prime
            bool sp = true;
            for (long k = 2; k <= a / 2; k++)
                if (a % k == 0) sp = false;
            return sp;
        }

        private static long volteado(long a) // Declare volteado as static
        {
            // Swap the received number
            long v = 0;
            while (a > 0)
            {
                v = 10 * v + a % 10;
                a /= 10;
            }
            return v;
        }
    }
}
ログイン後にコピー

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

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