无法访问公共类属性

本文关键字:属性 访问 | 更新日期: 2023-09-27 18:36:23

>我正在尝试创建一个新类,该类应该在其代码中包含以下变量:

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"是一个"字段",但像"类型"一样使用

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

无法访问公共类属性

您尚未将该代码放在可执行代码块中。 不能只在类型中浮动属性资源库;它需要位于方法、构造函数等内部。

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

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

这有效:

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

也许你在某处缺少;}

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

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

设置Width属性的代码是否在函数内部?它必须是。如果不是,您将看到此错误。

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

 map.Width = 10