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 サイトの他の関連記事を参照してください。