首先你好,这是我在这个论坛上的第一篇文章。
我在IT学位的第二年完成了一个项目。这是一场火灾的洗礼,因为它是C#中的tcp / ip实用程序,也是我在第一年用Java编写基础模块的唯一经验。
我的问题是我的程序部分使用NetworkAdapter类可用性属性记录NIC卡错误代码。我已经创建了一个错误代码描述数组,因为它们不会随代码自动返回。显然,数组基于0,代码从1开始,我必须将空值作为数组中的条目。有更强大的解决方案还是唯一的方法?我问,因为我理解数组中的空值是不受欢迎的。
string[] availabilityArray = new string[] {"", "Other", "Unknown", "Running or Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown" + "\n" +"The device is known to be in a power save state, but its exact status is unknown.", "Power Save - Low Power Mode" + "/n" +"The device is in a power save state, but still functioning, and may exhibit degraded performance.", "Power Save - Standby" + "/n" +"The device is not functioning, but could be brought to full power quickly.", "Power Cycle", "Power Save - Warning" + "/n" + "The device is in a warning state, though also in a power save state.",};
非常感谢
答案 0 :(得分:3)
你的解决方案没问题。
您还可以使用Dictionary<int, string>
。
答案 1 :(得分:1)
有多种方法可以解决这个问题:
在查找之前从每个错误代码中减去1:
string text = availabilityArray[errorCode - 1];
使用字典:
Dictionary<int, string> availability = new Dictionary<int, string>
{
{ 1, "Other" },
{ 2, "Unknown" },
};
这也可以处理间隙,您可以轻松跳到上面列表中的代码10并继续,但是您需要显式代码来检测字典中是否存在错误代码:
string text;
if (availability.TryGetValue(errorCode, out text))
// is there
else
// is not
答案 2 :(得分:0)
而不是使用数组,你可以使用:
Dictionary<int, string>
因此您可以以独立于集合索引的方式映射错误代码和消息。
答案 3 :(得分:0)
在默默无闻的名义下,您应该能够在C#中创建一个索引数组:
Array.CreateInstance(typeof(string), new[] { 100 /* array length */ }, new { 1 } /* offset */);
答案 4 :(得分:0)
使用枚举
enum Availability
{
Other = 1,
Unknown,
Running_or_Full_Power,
Warning, In_Test,
Not_Applicable,
Power_Off,
Off_Line,
Off_Duty, Degraded
};