Jestem nowy w metodach rozszerzeń i odkrywaniu, co mogą zrobić.Metody rozszerzania C# - wywołanie zwrotne obiektu
Czy możliwe jest przypisanie obiektu wywołującego danych wyjściowych bez określonego przypisania?
Oto prosty przykład, aby wyjaśnić:
public static string ExtensionTest(this string input)
{
return input + " Extended!";
}
W poniższych przykładach ...
var foo = "Hello World!";
var foo2 = foo.ExtensionTest(); // foo2 = "Hello World! Extended!"
foo.ExtensionTest(); // foo = "Hello World!"
foo = foo.ExtensionTest(); // foo = "Hello World! Extended!"
... czy jest jakiś sposób, aby uzyskać foo.ExtensionTest()
spowodować "Hello World! Extended!"
bez specjalnie przypisywania foo = foo.ExtensionTest()
Brzmi jak szukasz w 'tego modyfikatora ref' na statycznej metody gdzie call-site wygląda jak 'foo.Extension();'. Niestety język nie ma tej funkcji w tej chwili. Może coś, co mógłbyś polecić projektantom języka? :) Osobiście nie chciałbym tego. – Ani
@Ani: Haha, nie! Och, człowieku, czy możesz sobie wyobrazić * nadużycie *, które się pojawi? 'string bar = foo; foo.DoSomething(); Console.WriteLine (ReferenceEquals (bar, foo)); '... (wynik:' False', programista: * WHAAAT?!? *) –
@Dan Tao: Dokładnie. Wszystkie twoje referencje należą do metod statycznych. – Ani