我希望能寫擴展方法這樣我就可以說:如何獲得擴展方法來更改原始對象?
lines.ForceSpaceGroupsToBeTabs();
代替:
lines = lines.ForceSpaceGroupsToBeTabs();
但是,下面的代碼目前輸出:
....one
........two
而不是:
Tone
TTtwo
什麼我有下面的代碼修改,使其輸出:
Tone
TTtwo
(請注意,知名度,. = space, 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;
}
}
}
確實。你不能切換「擴展的」被引用的對象,但你可以改變其內容 – 2010-02-24 16:45:46