非静态字段、方法或属性“控制台应用程序”需要对象引用
本文关键字:应用程序 控制台 对象引用 属性 字段 静态 方法 | 更新日期: 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);