c#:在类之间传递值(错误CS0120)

本文关键字:错误 CS0120 之间 | 更新日期: 2023-09-27 18:11:11

在下面的代码中,当我试图从其他类调用数组时,我得到了一个错误。出了什么问题?

错误CS0120:需要对象引用来访问非静态成员learningcsharp.Wall。基于"增大化现实"技术"(CS0120)

using System;
namespace learningcsharp
{
    public class Wall
    {
        private int[] _ar;
        public int[] Ar
        {
            get
            {
                return _ar;
            }
            set
            {
                _ar = value;
            }   
        }
        public void build()
        {
            Ar = new int[] { 0, 0, 1, 0, 0 };
        }
    }
    public class Draw
    {
        public void draw()
        {
            Console.WriteLine (Wall.Ar[1]);   // ERROR CS0120
        }
    }
    class MainClass
    {
        public static void Main (string[] args)
        {
            Wall wall = new Wall ();
            wall.build ();
            Draw draw = new Draw ();
            draw.draw ();
        }
    }
}

c#:在类之间传递值(错误CS0120)

你需要传递一个Wall to draw方法的实例作为参数

public class Draw
{
    public void draw(Wall wall)
    {
        Console.WriteLine (wall.Ar[1]);
    }
}

你可以这样命名它:

 public static void Main (string[] args)
    {
        Wall wall = new Wall ();
        wall.build ();
        Draw draw = new Draw ();
        draw.draw (wall);
    }

这个错误字面上解释了该怎么做,但这里有一个来自Jamie Dixon的帖子的例子:

这是来自官方MSDM页面:创建对象/类我想这正是你所需要的。

我希望这对你有帮助。

好运

或者直接将array标记为static:

private static int[] _ar;