为什么将 args[0] 保存到字符串中会出现索引超出范围异常?

Why does saving args[0] into a string give out a index-out-of-range exception?

我试图将 args[0] 保存到 string lemon,但无论我尝试什么,它根本不起作用,而是抛出一个 IndexOutOfRange 异常:

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array. at NHBloater.Program.Main(String[] args) in C:\Users...\Program.cs:line 12

我试过了:

编辑:我修复了它但不知道如何修复,令我担心的代码是 output += inputArray[i]

这是第一行第 10 行的代码,没有尝试修复它: c#:

static void Main(string[] args)
{
    string lemon = args[0];
    string input = File.ReadAllText(lemon);
    string[] inputArray = input.Split();
    string output = "";
    for (int i = 0; i < input.Length; i++) 
        for (int j = 0; j < Convert.ToInt32(args[2]); j++) 
            output += inputArray[i];
    File.WriteAllText(args[1], output);
}

导入的库:

参数:

"h.txt"
"h2.txt"
"5"

args won't be null(参见link中的绿色提示框),它可能是一个长度为0的数组。

所以 args[0] 不存在,因为它指的是数组中的第一项,它没有任何项。

如果您确实在 Visual Studio 的“命令行参数”中设置它并且确实在使用调试模式 - 请参阅 。基本上 - 确保它全部在“任何 CPU”。

编辑

改变

string[] inputArray = input.Split();

string[] inputArray = input.ToCharArray();

如何启动Main函数(程序)?您是否将参数传递给 Main 函数?如果不是,则 args 数组的长度为 0(该数组中没有任何字段)。

您正在检查 input.Length 但您正在 访问 inputArray[i].