C# 非静态字段、方法或属性需要对象引用';控制台应用程序

C# 非静态字段、方法或属性需要对象引用';控制台应用程序,c#,C#,我得到一个错误: namespace ConsoleApplication { class Program { static void Main() { int val = 10; fnctest(val); Console.WriteLine(val); } void fnctest(int val) {

我得到一个错误:

namespace ConsoleApplication
{

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

如何解决此错误?

使您的
fnctest
方法或实例化您的类并调用您的方法

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


请阅读

声明
fnctest
静态

像这样

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

}
void fnctest(int val)
{
   val = 200;
}
顺便说一句(与问题无关):

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

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

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

所以,你的方法应该是

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

您的方法调用应该是

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

阅读并理解本文及相关文章