我可以在 foreach 中使用 StringBuilder 元素吗?

B. *_*non 4 .net c# arrays foreach stringbuilder

由于我使用的是 .NET 1.1,我不能使用字符串的泛型列表,因为泛型还不是语言的一部分。所以我正在尝试使用 StringBuilder,但得到这个错误消息:

“foreach 语句不能对'System.Text.StringBuilder' 类型的变量进行操作,因为'System.Text.StringBuilder' 不包含'GetEnumerator' 的定义,或者它是不可访问的”

使用此代码:

public StringBuilder linesToSend;
. . .

foreach (string _line in this.linesToSend)
{
    serialPort.Write(_line);
}
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗,或者 StringBuilder 真的不允许 foreach 循环?如果是后者,String[] 是我最好的求助方式吗?

Jas*_*dly 5

老问题,我知道,但一些可能有用的东西:

如果你的每个字符串都是用 .AppendLine 构建的,或者你插入了一个新行,你可以这样做

string[] delim = { Environment.NewLine, "\n" }; // "\n" added in case you manually appended a newline
string[] lines = StringBuilder.ToString().Split(delim, StringSplitOptions.None);
foreach(string line in lines){
    // Do something
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 4

AStringBuilder不存储您附加的行。它只是用于构建最终的字符串。假设您已经添加了所有内容StringBuilder,您可以执行以下操作:

// Write the complete string to the serialPort
serialPort.Write(linesToSend.ToString());
Run Code Online (Sandbox Code Playgroud)