我遇到了问题
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();
答案 0 :(得分:2)
您正在使用list++
来递增string[]
,但不会编译。
您的代码中还有另外两个问题:
list.Length
不会根据您现有的代码进行更改,这意味着... while
循环将是无穷无尽的……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