Rumah >pembangunan bahagian belakang >C++ >Mengapa 'Rujukan Objek Diperlukan...' Berlaku Apabila Memanggil Kaedah Bukan Statik daripada Kaedah Statik dalam C#?

Mengapa 'Rujukan Objek Diperlukan...' Berlaku Apabila Memanggil Kaedah Bukan Statik daripada Kaedah Statik dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 17:46:11544semak imbas

Why Does

Ralat: "Rujukan Objek Diperlukan untuk Medan, Kaedah atau Harta Bukan Statik..."

Dalam C#, ralat "rujukan objek diperlukan untuk medan, kaedah atau sifat bukan statik..." timbul apabila cuba mengakses ahli bukan statik daripada kaedah statik. Ralat ini berlaku disebabkan oleh ketidakupayaan kaedah statik untuk mengakses data khusus contoh.

Dalam coretan kod yang disediakan, isu timbul dalam kaedah "Utama", yang diisytiharkan statik, manakala "volteado" dan Kaedah "siprimo" tidak statik. Untuk menyelesaikan ralat ini, kaedah "siprimo" dan "volteado" mesti diisytiharkan statik. Dengan menambahkan kata kunci "statik", kaedah ini boleh diakses terus dalam kaedah "Utama" statik. Berikut ialah kod yang diperbetulkan:

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;
        }
    }
}

Atas ialah kandungan terperinci Mengapa 'Rujukan Objek Diperlukan...' Berlaku Apabila Memanggil Kaedah Bukan Statik daripada Kaedah Statik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn