首页 > 后端开发 > C++ > 为什么在 C# 中从静态方法调用非静态方法时会出现'需要对象引用...”?

为什么在 C# 中从静态方法调用非静态方法时会出现'需要对象引用...”?

Linda Hamilton
发布: 2025-01-22 17:46:11
原创
587 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板