C# Variable = new function () {};
c#, function, variables
Solution
One way to define such a function:
Func<bool, string> getResult = ( a ) => {
if (a)
return "a";
return "b";
}
You can then invoke: `string foo = getResult( true );`. As a delegate, it can be stored/passed and invoked when needed.
Example:
string Foo( Func<bool, string> resultGetter ){
return resultGetter( false );
}
You can also close around variables within scope:
bool a = true;
Func<string> getResult = () => {
if (a)
return "a";
return "b";
}
string result = getResult();
Problem
Within C# is it possible to create a new function on the fly to define a variable? I know that ``` string getResult() { if (a) return "a"; return "b"; } String result = getResult(); ``` is possible, but I'm looking for something like ``` String result = new string getResult() { if (a) return "a"; return "b"; } ``` Is this possible? If so, would someone demonstrate? EDIT It is possible Edit: Final - Solution This is the end result of what I barbarically hacked together ``` 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(); ```