Ich mag Erweiterungsmethoden schreiben können so dass ich sagen kann:Wie kann ich eine Erweiterungsmethode zum Ändern des ursprünglichen Objekts erhalten?
lines.ForceSpaceGroupsToBeTabs();
statt:
lines = lines.ForceSpaceGroupsToBeTabs();
Allerdings gibt den folgenden Code zur Zeit:
....one
........two
anstelle von:
Tone
TTtwo
Was muss ich im folgenden Code ändern, um es Ausgabe zu machen:
Tone
TTtwo
(beachten, dass für die Sichtbarkeit, . = 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;
}
}
}
In der Tat. Sie können das "erweiterte" referenzierte Objekt nicht wechseln, aber Sie können seinen Inhalt ändern –