我认为我的代码应该可以工作时出现ArgumentOutOfRangeException

时间:2018-10-28 13:39:41

标签: c#

我正在为学校编写一些代码,但我不断收到ArgumentOutOfRangeException

使用此代码,我试图从.csv文件中读取一些数据,如果它等于图像的名称,我希望它从.csv文件中删除它,同时保持结构完整。

public void checkPair(Image card1, Image card2)
    {
        this.Image1 = card1;
        this.Image2 = card2;

        if (Convert.ToString(card1.Source) == Convert.ToString(card2.Source) && (card1 != card2))
        {
            getPoint(card1, card2);



            string path = @"Save1.csv";

            var reader = new StreamReader(File.OpenRead(path));
            var data = new List<List<string>>();

            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(';');

                data.Add(new List<String> { values[0], values[1]
                    });
            }
            reader.Close();

            string delimiter = ";";

            for (int i = 1; i < 5; i++)
            {
                for (int x = 0; x < 4; x++)
                {
                    if (data[i][x] == Convert.ToString(card1.Source))
                    {
                        data[i][x] = null;
                    }
                }
            }

            File.WriteAllText(path, data[0][0] + delimiter + data[0][1] + Environment.NewLine + data[1][0] + delimiter + data[1][1] + delimiter + data[1][2] + delimiter + data[1][3] + Environment.NewLine + data[2][0] + delimiter + data[2][1] + delimiter + data[2][2] + delimiter + data[2][3] + Environment.NewLine + data[3][0] + delimiter + data[3][1] + delimiter + data[3][2] + delimiter + data[3][3] + Environment.NewLine + data[4][0] + delimiter + data[4][1] + delimiter + data[4][2] + delimiter + data[4][3] + Environment.NewLine + "ready");

我不知道为什么会收到此错误以及如何解决该错误

1 个答案:

答案 0 :(得分:2)

最初,我将从

更改您的最后一行
File.WriteAllText(path, data[0][0] + delimiter + data[0][1] ....

类似

var obj1 = data[0][0];
var obj2 = data[0][1];

File.WriteAllText(path, obj1 + delimiter + obj2 .... etc)

如果您遍历内联函数或数组访问,则当您遇到异常时,堆栈跟踪不会那么有用。至少您会对导致问题的声明有所了解。

如果您要在事后查看日志中的异常,则可以证明该技术非常有用。