gpt4 book ai didi

c# - 如何获得扩展方法来更改原始对象?

转载 作者:IT王子 更新时间:2023-10-29 04:17:45 25 4
gpt4 key购买 nike

我希望能够编写扩展方法,这样我就可以说:

lines.ForceSpaceGroupsToBeTabs();

代替:

lines = lines.ForceSpaceGroupsToBeTabs();

但是,以下代码当前输出:

....one
........two

代替:

Tone
TTtwo

我必须在以下代码中更改什么才能使其输出:

Tone
TTtwo

(注意可见性,. = 空格,T =\t):

using System;
using System.Collections.Generic;

namespace TestExtended82343
{
class Program
{
static void Main(string[] args)
{
List<string> lines = new List<string>();
lines.Add("....one");
lines.Add("........two");

lines.ForceSpaceGroupsToBeTabs();

lines.ForEach(l => Console.WriteLine(l));
Console.ReadLine();
}
}

public static class Helpers
{
public static void ForceSpaceGroupsToBeTabs(this List<string> originalLines)
{
string spaceGroup = new String('.', 4);
List<string> lines = new List<string>();
foreach (var originalLine in originalLines)
{
lines.Add(originalLine.Replace(spaceGroup, "T"));
}
originalLines = lines;
}
}
}

最佳答案

您必须修改 List<string> 的内容传递给扩展方法,而不是保存对列表的引用的变量:

public static void ForceSpaceGroupsToBeTabs(this List<string> lines)
{
string spaceGroup = new String('.', 4);
for (int i = 0; i < lines.Count; i++)
{
lines[i] = lines[i].Replace(spaceGroup, "T");
}
}

关于c# - 如何获得扩展方法来更改原始对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com