-4
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'

我能做些什么来解决这个错误?

4

3 回答 3

4

制作您的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)

于 2013-10-20T13:06:16.417 回答
0

声明fncteststatic

像这样

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

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

我认为您试图找到值类型和引用类型之间的区别。 valvalue 在方法中发生了变化,然后打印出来看看它的值是否有任何变化。在这种情况下,您还应该了解out参数。

于 2013-10-20T13:06:21.540 回答
0

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

此外,您应该通过引用传递参数,以防您想更改传递给方法的原始值

所以,你的方法应该是

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

你的方法调用应该是

fnctest(ref val);
于 2013-10-20T13:07:08.120 回答