C#UWP程序在读取循环时以2666项列表停止

时间:2018-01-17 11:36:24

标签: c# list memory uwp

我有一个名称列表(msfuncionarios),名称,RFID-MAC(6对十六进制数字)等。 当我读取RFID(输出6位十进制数字)时,我需要用该MAC检查名称。

我有下面的代码,但我认为这会打破内存错误。 这个清单有2666项。

我在Raspberry PI 2 v.B上运行该程序。

string ConvertUidToName(string uid)
{
    int j, h;
    int k = 0;
    string final="";
    string[] separators = { "-" };

    for (k=0;k <= msfuncionarios.count;k++)
    {
        TextBox_produto.Text = k.ToString();
        string[] words = msfuncionarios[k].MAC.Split(separators, StringSplitOptions.RemoveEmptyEntries);

        i = 0;
        h = 0;

        for (h = 2; h <= 5; h++)
        {
            j = Convert.ToInt32(words[h], 16);
            final = final + j;
        }

        j = 0;

        if (final == uid )
        {
            return msfuncionarios[k].Nome.ToString();
        }

        final = "";
    }

    return uid.ToString();
}

2 个答案:

答案 0 :(得分:4)

问题出在for条件:

for (k=0; k <= msfuncionarios.count; k++)

您正在使用<=运算符,因此循环运行2667次,即使对于超出范围的不存在项msfuncionarios[2666]也是如此。您可以使用<运算符来修复它。

for (k=0; k < msfuncionarios.count; k++)

答案 1 :(得分:1)

解决!

我在API中发现了一个写在列表中的bugg。该列表包含空MAC和转换中断。