如何解决错误:“非静态字段,方法或属性需要对象引用。” [重复]?

您不能从静态方法访问非静态成员。(请注意,这Main()是静态的,这是.Net的要求)。通过将static关键字放在siprimo和volteado之前,使它们固定为静态。例如:

 static private long volteado(long a)

解决方法

我正在用C#创建一个应用程序。它的功能是评估给定是否为质数,以及相同的交换数是否为质数。

当我在Visual Studio中构建解决方案时,它说“非静态字段,方法或属性需要对象引用”。我在使用“ volteado”和“
siprimo”方法时遇到了这个问题。

问题出在哪里,我该如何解决?

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 isnt prime.");
            Console.ReadLine();
        }

        private bool siprimo(long a)
        {
            // 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 long volteado(long a)
        {
            // Swap the received number
            long v = 0;
            while (a > 0)
            {
                v = 10 * v + a % 10;
                a /= 10;
            }
            return v;
        }
    }
}