数组问题 - 关于索引。 C #

时间:2011-02-24 12:49:15

标签: c# arrays

首先你好,这是我在这个论坛上的第一篇文章。

我在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.",};

非常感谢

5 个答案:

答案 0 :(得分:3)

你的解决方案没问题。

您还可以使用Dictionary<int, string>

答案 1 :(得分:1)

有多种方法可以解决这个问题:

  1. 保留您的第一个元素
  2. 在查找之前从每个错误代码中减去1:

    string text = availabilityArray[errorCode - 1];
    
  3. 使用字典:

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