>백엔드 개발 >C++ >C#의 정적 메서드에서 비정적 메서드를 호출할 때 '개체 참조가 필요합니다...'가 발생하는 이유는 무엇입니까?

C#의 정적 메서드에서 비정적 메서드를 호출할 때 '개체 참조가 필요합니다...'가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 17:46:11541검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.