C#数组超出范围异常错误

时间:2015-06-08 00:46:33

标签: c# arrays exception

我正在查看代码高尔夫部分,并遇到了一个非常有趣的编码挑战。我决定仔细阅读帖子并注意到在C#中有一个例子。 为了了解它是如何工作的,我复制了代码并将其放入我的VS中以运行和调试它,但是,当我运行它时会出现问题。 (我想这样做的原因是因为我在了解原始程序员所设想的内容之后,计划用不同的代码创建我自己的版本。)

我得到一个数组超出范围的异常,我不知道为什么,有人会解释为什么错误存在并纠正它的步骤?

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace SourceCodeTranslationChallenge
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, string> dx = new Dictionary<string, string>();
            dx.Add("using", "usura");
            dx.Add("System", "Ratio");
            dx.Add("Collections", "Comprensio");
            dx.Add("Text", "Scriptum");
            dx.Add("txt", "scrptm");
            dx.Add("output", "scribo");
            dx.Add("namespace", "nomenspatium");
            dx.Add("class", "classis");
            dx.Add("Program", "Libellus");
            dx.Add("static", "immotus");
            dx.Add("void", "inane");
            dx.Add("Main", "Paelagus");
            dx.Add("string", "chorda");
            dx.Add("args", "argumenta");
            dx.Add("Dictionary", "Lexicon");
            dx.Add("new", "novus");
            dx.Add("Add", "Adaugeo");
            dx.Add("IO", "LecticoScribo");
            dx.Add("abstract", "abstracto");
            dx.Add("break", "confractus");
            dx.Add("Math", "Mathematica");
            dx.Add("File", "Ordo");
            dx.Add("file", "ordo");
            dx.Add("foreach", "prosingulus");
            dx.Add("Read", "Lectico");
            dx.Add("Write", "Scribo");
            dx.Add("All", "Omnes");
            dx.Add("translation", "interpretatio");
            dx.Add("bool", "verumfalsus");
            dx.Add("true", "verum");
            dx.Add("false", "falsus");
            dx.Add("0", "nil");
            dx.Add("||", "aut");
            dx.Add("&&", "et");
            dx.Add("Key", "Clavis");
            dx.Add("Value", "Pretium");
            dx.Add("Replace", "Restituo");
            dx.Add("Generic", "Ordinarius");
            dx.Add("ToLatin", "AdLatinam");
            string file = File.ReadAllText(args[0]);
            foreach (var translation in dx )
            {
                file = file.Replace(translation.Key, translation.Value);
            }
            File.WriteAllText("output.txt", file);
        }
    }
}

2 个答案:

答案 0 :(得分:4)

您是否只是通过运行可执行文件来运行此程序?如果是这样,你做错了。该程序要求在参数字符串中发送文件。所以,要测试它,只需&#34;打开&#34;使用此程序的输入文件。

答案 1 :(得分:3)

由于您在VS中进行了调试,因此在“string file = File.ReadAllText(args [0]);”上设置断点。你可能会看到args没有长度或者是null。

如果是这样,那么在项目设置中=&gt;调试部分,有一个命令行参数框,您可以在其中设置有效的文件路径(例如,C:\ YourFile.txt)。

一旦你这样做,尝试再次调试它,args [0]应该有一个值。