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

时间:2015-09-03 09:15:34

标签: c# class

在下面的代码中,当我尝试从另一个类调用该数组时,我收到错误。出了什么问题?

错误CS0120:访问非静态成员`learningcsharp.Wall.Ar'需要对象引用(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 ();
        }
    }
}

3 个答案:

答案 0 :(得分:3)

你需要传递一个Wall实例来绘制方法作为参数

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);
    }

答案 1 :(得分:0)

错误说明了该怎么做,但这是Jamie Dixon的帖子中的一个例子:Object in C#

这是来自官方MSDM页面:Creating objects/classes 我认为这正是你所需要的。

我希望这可以帮助你。

祝你好运

答案 2 :(得分:0)

或者只是将数组标记为静态:

private static int[] _ar;

也有财产。