类中的静态整数在foreach循环中无法访问?

-3 c# foreach static class

这是我正在使用的代码:

    class Program
    {
        static StandardRoom room55 = new StandardRoom(55);
        static StandardRoom room45 = new StandardRoom(45);
        static List<StandardRoom> roomMap = new List<StandardRoom>() { room45, room55 };

    static void Main(string[] args)
    {
        foreach(StandardRoom room in roomMap)
        {
            Console.WriteLine(room.roomId);   
        }
    }

class StandardRoom
{
    public static int roomId;

    public StandardRoom(int roomNum)
    {
        roomId = roomNum;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

使用实例引用无法访问成员"room.roomId"; 用类型名称来限定它.

我真的不确定如何解决这个问题.

Igo*_*gor 5

class StandardRoom
{
    public int roomId {get; set;} // modified
}
Run Code Online (Sandbox Code Playgroud)

您不需要静态字段,您需要公共实例属性.

如果你想确保它不能从类外部更改,那么将setter设为私有或完全删除它,这对于c#v6来说很好.

class StandardRoom
{
    public int roomId {get; private set;} // modified
    public StandardRoom(int roomNum)
    {
        this.roomid = roomNum;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在为什么不静电?静态是在类型本身上跟踪的单个实例.您想为每个房间实例定义一个房间,因此它必须是一个实例变量.你几乎不应该使用静态字段/属性.