W języku C# można w locie utworzyć nową funkcję, aby zdefiniować zmienną?C# Variable = new function() {};
wiem, że
string getResult() {
if (a)
return "a";
return "b";
}
String result = getResult();
jest możliwe, ale ja szukam czegoś podobnego
String result = new string getResult() {
if (a)
return "a";
return "b";
}
to jest możliwe? Jeśli tak, czy ktoś by to wykazał?
EDIT Jest możliwe
Edit: Final - Rozwiązanie
To jest końcowy wynik, co ja barbarzyńsko hacked razem
Func<string> getResult =() =>
{
switch (SC.Status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
case ServiceControllerStatus.Paused:
return "Paused";
case ServiceControllerStatus.StopPending:
return "Stopping";
case ServiceControllerStatus.StartPending:
return "Starting";
default:
return "Status Changing";
}
};
TrayIcon.Text = "Service Status - " + getResult();
(Jeśli rozumiem intencję pytającego ...) Polecam przeciw temu, ponieważ nie jest to coś, do czego zwykle używane są funkcje "Func" i może być mylące dla przyszłych czytelników twojego kodu (do ciebie włącznie), które są bardziej znane z normalnymi wzorami użycia 'Func'. Chyba że jest to naprawdę instancja, w której "Func" lub "Akcja" ma więcej sensu, albo wstawiaj kod, albo uczyń go osobną metodą. –
Musiałbym się nie zgodzić. Chociaż nie wiem, jakie są potrzeby PO, a jest to wymyślny przykład, umiejętność definiowania i wielokrotnego/warunkowego/ostatecznego wykonania delegata jest zarówno silna, jak i powszechna. Ale to tylko ja. –
To tak naprawdę nie działa dla mnie tak, jak Tim S. stwierdził. Wolałbym zdefiniować go w osobnej metodzie, gdybym używał tej trasy. Moim jedynym prawdziwym celem w tym celu było zdefiniowanie tego leniwego stylu w jednym wierszu, jak Actionscript, lub co uważam za możliwe również w Javo. Kiedy zdałem sobie sprawę, że może to być trudniejsze, niż początkowo zamierzałem, byłem ciekawy, jak można to zaimplementować, jeśli faktycznie można go wdrożyć. –