为二维数组赋值
Assigning value to a two dimensional array
我有一个客户端服务器程序。客户是学生,所以我制定了一个生成二维按钮阵列的座位图。
Button[,] btnSeat = new Button[8, 6];
如何在客户端在线后将客户端的主机名分配给每个按钮?假设已经有一个主机名。将第一个上线的用户分配给第一个array[0,0],第二个上线的用户分配给array[0,1],依此类推....?
这是我的座位布置图
我还需要检索等于该主机名的数组[x,y]。请帮忙,谢谢。
这是我认为更好的数据结构的示例:
对于电脑来说,你需要保存一些信息,所以为电脑创建一个class:
public class Computer
{
public string HostName { get; set; }
public int Row { get; set; }
public int Column { get; set; }
//Whatever else you want to add, like
public bool IsActive { get; set; }
public bool IsScrewingAround { get; set; }
}
然后你可以使用字典来存储数据:
public Dictionary<string, Computer> _computers =
new Dictionary<string, Computer>(StringComparer.OrdinalIgnoreCase);
然后您将计算机添加到其中:
_computers.Add("someHostName", new Computer()
{
HostName = "someHostName",
Row = 0,
Column = 4,
IsActive = true,
IsScrewingAround = false
});
然后您可以在 O(1) 操作中按主机名查找计算机,例如:
var cpu = _computers["hostName"];
或者获取正在运行的计算机列表:
var screwOffs = _computers.Values.Where(c => c.IsScrewingAround);
想要第 4 行中的所有计算机吗?
var row4 = _computers.Values.Where(c => c.Row == 4);
与阵列相比,这给了您一个优势,它可以根据添加到其中的 Computer
的数量增长,以防您的房间形状发生变化。
真的,如果您不需要 O(1) 查找主机名,这可能是一个 List<Computer>
,我猜这会很好,因为您的项目数量相对较少在 class 房间。
我有一个客户端服务器程序。客户是学生,所以我制定了一个生成二维按钮阵列的座位图。
Button[,] btnSeat = new Button[8, 6];
如何在客户端在线后将客户端的主机名分配给每个按钮?假设已经有一个主机名。将第一个上线的用户分配给第一个array[0,0],第二个上线的用户分配给array[0,1],依此类推....?
这是我的座位布置图
我还需要检索等于该主机名的数组[x,y]。请帮忙,谢谢。
这是我认为更好的数据结构的示例:
对于电脑来说,你需要保存一些信息,所以为电脑创建一个class:
public class Computer
{
public string HostName { get; set; }
public int Row { get; set; }
public int Column { get; set; }
//Whatever else you want to add, like
public bool IsActive { get; set; }
public bool IsScrewingAround { get; set; }
}
然后你可以使用字典来存储数据:
public Dictionary<string, Computer> _computers =
new Dictionary<string, Computer>(StringComparer.OrdinalIgnoreCase);
然后您将计算机添加到其中:
_computers.Add("someHostName", new Computer()
{
HostName = "someHostName",
Row = 0,
Column = 4,
IsActive = true,
IsScrewingAround = false
});
然后您可以在 O(1) 操作中按主机名查找计算机,例如:
var cpu = _computers["hostName"];
或者获取正在运行的计算机列表:
var screwOffs = _computers.Values.Where(c => c.IsScrewingAround);
想要第 4 行中的所有计算机吗?
var row4 = _computers.Values.Where(c => c.Row == 4);
与阵列相比,这给了您一个优势,它可以根据添加到其中的 Computer
的数量增长,以防您的房间形状发生变化。
真的,如果您不需要 O(1) 查找主机名,这可能是一个 List<Computer>
,我猜这会很好,因为您的项目数量相对较少在 class 房间。