在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中文網其他相關文章!