非静态字段、方法或属性“控制台应用程序”需要对象引用

本文关键字:应用程序 控制台 对象引用 属性 字段 静态 方法 | 更新日期: 2023-09-27 18:36:03

namespace ConsoleApplication
{
    class Program
    {
        static void Main()
        {
            int val = 10;
            fnctest(val);
            Console.WriteLine(val);
        }
        void fnctest(int val)
        {
            val = 200;
        }
    }
}

我收到错误:

An object reference is required for the non-static field, method,
or property 'ConsoleApplication'

我该怎么做才能解决此错误?

非静态字段、方法或属性“控制台应用程序”需要对象引用

fnctest方法设为static或实例化类并调用方法。

static void Main()
{
   int val = 10;
   fnctest(val);
   Console.WriteLine(val);
}
static void fnctest(int val)
{
   val = 200;
} 

static void Main()
{
   int val = 10;
   Program p = new Program();
   p.fnctest(val);
   Console.WriteLine(val);
}
void fnctest(int val)
{
   val = 200;
}

恳求读Static Classes and Static Class Members (C# Programming Guide)

fnctest声明为 static

喜欢这个

public static void fnctest(int val)
{
    val = 200;
}

顺便说一句(与问题无关):

我认为您试图找到值类型和引用类型之间的区别。 val值在方法中更改,然后打印以查看其值是否有任何更改。在这种情况下,您还应该了解out参数。

main

方法是静态的,因此你只能从 main 调用静态方法。

此外,如果要更改传递给该方法的原始值,还应通过引用传递参数

所以,你的方法应该是

static void fnctest(ref int val)
{
    val = 200;
}

您的方法调用应为

fnctest(ref val);