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)
但是当我调用代码时,新文本永远不会附加到原始实例变量.怎么实现呢?
您需要修改变量的值,因为字符串是不可变的(请参阅公共C#字符串替换不起作用).不幸的是,没有办法使用扩展方法,因为ref那里不允许:
public static void appendLine(this ref String str, string text) // invalid
Run Code Online (Sandbox Code Playgroud)
所以你的选择
常规方法 ref
public static void AppendLine(ref String str, string text)
{
str = str + text;
}
Run Code Online (Sandbox Code Playgroud)从扩展方法返回新值:
public static string AppendLine(this String str, string text)
{
return str + text;
}
Run Code Online (Sandbox Code Playgroud)注意:考虑是否StringBuilder适用于您的情况.
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |