当我使用StringBuilder.Append而不是.AppendLine时,我是否需要添加额外的.Append(crlf)s?

时间:2013-02-06 17:35:37

标签: c# .net visual-studio append stringbuilder

我正在调整我在这里找到的一些代码:http://nicholas.piasecki.name/blog/2009/03/sending-raw-epl2-directly-to-a-zebra-lp2844-via-c/#comment-1636,但在VS 2003 / .NET 1.1中,StringBuilder的AppendLine方法无法识别,因此我将其截断为.Append。

现在我需要在每次调用Append之后添加#13#10左右 - 我假设这是AppendLine自动执行的操作。

3 个答案:

答案 0 :(得分:8)

AppendLine()会追加其论点,然后是Environment.Newline 如果您不致电AppendLine(),则需要自行添加换行符。

答案 1 :(得分:2)

是。但要小心将其视为CRLF - internally StringBuilder uses Environment.Newline所以值得使用Environment.NewLine来实现交叉兼容性。

 [System.Runtime.InteropServices.ComVisible(false)]
    public StringBuilder AppendLine() {
        Contract.Ensures(Contract.Result<stringbuilder>() != null);
        return Append(Environment.NewLine);
    }

    [System.Runtime.InteropServices.ComVisible(false)]
    public StringBuilder AppendLine(string value) {
        Contract.Ensures(Contract.Result<stringbuilder>() != null);
        Append(value);
        return Append(Environment.NewLine);
    }

编辑:除非您因硬件而特别需要使用CRLF,否则我猜。

答案 2 :(得分:1)

StringBuilder.AppendLine

的已解压缩来源
/// <summary>
/// Appends the default line terminator to the end of the current <see cref="T:System.Text.StringBuilder"/> object.
/// 
/// </summary>
/// 
/// <returns>
/// A reference to this instance after the append operation has completed.
/// 
/// </returns>
/// <exception cref="T:System.ArgumentOutOfRangeException">Enlarging the value of this instance would exceed <see cref="P:System.Text.StringBuilder.MaxCapacity"/>.
///                 </exception><filterpriority>1</filterpriority>
[ComVisible(false)]
[__DynamicallyInvokable]
public StringBuilder AppendLine()
{
  return this.Append(Environment.NewLine);
}