使用扩展方法修改字符串实例变量

Jas*_*n O 1 c# string extension-methods

我正在尝试为String类创建一个简单的扩展方法,这将允许我提供要附加到包含换行符的现有字符串变量的文本:

string myStr = "Line 1";
myStr.AppendLine("Line 2");
Run Code Online (Sandbox Code Playgroud)

此代码应生成一个打印如下的字符串

Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)

这是我为它写的代码:

public static class StringExtensions
{
    public static void appendLine(this String str, string text)
    {
        str = str + text + Environment.NewLine;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用代码时,新文本永远不会附加到原始实例变量.怎么实现呢?

Ale*_*kov 5

您需要修改变量的值,因为字符串是不可变的(请参阅公共C#字符串替换不起作用).不幸的是,没有办法使用扩展方法,因为ref那里不允许:

 public static void appendLine(this ref String str, string text) // invalid
Run Code Online (Sandbox Code Playgroud)

所以你的选择

注意:考虑是否StringBuilder适用于您的情况.