4

我正在调整我在这里找到的一些代码: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 自动执行的操作。

4

3 回答 3

11

是的。

AppendLine()将附加其参数,然后是Environment.Newline.
如果您不调用AppendLine(),则需要自己包含换行符。

于 2013-02-06T17:37:18.247 回答
2

是的。不过要小心将其视为 CRLF - 在内部 StringBuilder 使用 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,否则我猜。

于 2013-02-06T17:43:32.263 回答
2

反编译源码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);
}
于 2013-02-06T17:47:12.580 回答