无法访问公共类属性

时间:2013-10-22 19:03:30

标签: c# class variables

我正在尝试创建一个应该在其代码中包含这些变量的新类:

class Map
{
    // Variable declaration
    public int Width { get; set; } // Width of map in tiles
    public int Height { get; set; } // Height of map in tiles
    public int TileWidth { get; set; }
    public int TileHeight { get; set; }
}

但出于某种原因,在Game1.cs中创建一个新的Map类之后,我似乎无法理解宽度和高度等内容。

public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    public static SpriteBatch spriteBatch;

    // etc...

    // Class initialization
    Map map = new Map();

    map.Width = 10; // Won't work, says it is a 'field' but used like a 'type'
}

我认为我不是想设置这个属性,但我不确定如何实际操作。

尝试上述操作时出现两条错误消息:

  

'Deep.Game1.Map'是一个'字段',但用作“类型”

  

类,结构或接口成员声明中的标记'='无效

4 个答案:

答案 0 :(得分:7)

您尚未将该代码放在可执行代码块中。你不能只在一个类型内部浮动一个属性设置器;它需要在方法,构造函数等中。

如果要在初始化字段时设置宽度,则可以使用对象初始值设定项语法:

private Map map = new Map() {Width = 10};

答案 1 :(得分:3)

这有效:

void Main()
{
    Map map = new Map();

    map.Width = 10;
}

class Map
{
    public int Width { get; set; } // Width of map in tiles
    public int Height { get; set; } // Height of map in tiles
    public int TileWidth { get; set; }
    public int TileHeight { get; set; }
}

也许你某处遗失了;}

答案 2 :(得分:1)

我无法确定,但看起来您可能正在尝试在方法之外设置属性。试试这个:

class Game1
{
    Map map = new Map();

    public Game1()
    {
        map.Width = 10;
    }
}

答案 3 :(得分:0)

是否在函数内设置Width属性的代码?它需要。如果不是,你会看到这个错误。

也不确定这条线是否输入正确,但它缺少一个分号:

 map.Width = 10