CS0023 C#运算符不能应用于类型为'string []'的操作数

时间:2018-09-09 11:49:17

标签: c#

我遇到了问题

  

CS0023 C#运算符不能应用于类型为'string []'的操作数

我正在使用以下代码:

var list = File.ReadAllLines("E:/nadra data.txt");
int arslan = 0;

while (list.Length < 5)
{
    Console.WriteLine(arslan);
    list++;
}
Console.ReadLine();
Console.ReadKey();

4 个答案:

答案 0 :(得分:2)

您正在使用list++来递增string[],但不会编译。

您的代码中还有另外两个问题:

  1. list.Length不会根据您现有的代码进行更改,这意味着...
  2. 您的while循环将是无穷无尽的……
  3. 您仅输出的arslan从未重新分配,因此始终为0

听起来好像您正在将该列表视为堆栈或队列。我猜你想要这样的东西:

var allLines = File.ReadAllLines("E:/nadra data.txt");
int arslan = 0;

while (arslan < allLines.Length) {
    Console.WriteLine($"{arslan}: {allLines[arslan]}");
    arslan++;
}

Console.Write("Press any key to exit");
Console.ReadKey();

this repl here中试用

答案 1 :(得分:0)

没有用于数组的“ ++”运算符。您可能要使用for /F "tokens=3 delims= " %%a in (foo1.tmp) do ( echo %%a >> url.tmp ) set /p lat=<url.tmp more +1 <url.tmp >new.tmp for /F "tokens=* delims= " %%a in (new.tmp) do ( set var2=%%a ) 循环或foreach循环,它们将保留一个计数器。

for

foreach(string line in list)
{
    // do something with the line
}

您当前的实现还包含一个可能的无限循环。如果list.Length > = 5,则您的循环永远不会执行,但如果它小于5,则循环将永远运行。

答案 2 :(得分:0)

从讨论注释看来,文件中有很多行,OP现在只想输出5。因此,您可以使用Take()方法并遍历整个集合,例如:

var allLines = File.ReadLines("E:/nadra data.txt").Take(5);

foreach(var line in allLines)
   Console.WriteLine(line);

在这里,我们使用ReadLine,因为它看起来像文件很大,因此可以确保不将所有文件加载到内存中。

答案 3 :(得分:0)

如果我对您的理解正确

使用while循环

   string[] List1 = new string[]{"string1", "string2", "string3" , "string4", "string5", "string6", "string7"};

    int arslan = 0;

    while( arslan < 5)
    {
        arslan++;
        Console.WriteLine(List1[arslan]);

    }

输出:

string2
string3
string4
string5
string6