The*_*RFG 10 c# variables function
在C#中,是否可以动态创建新函数来定义变量?
我知道
string getResult() {
if (a)
return "a";
return "b";
}
String result = getResult();
Run Code Online (Sandbox Code Playgroud)
是可能的,但我正在寻找类似的东西
String result = new string getResult() {
if (a)
return "a";
return "b";
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是这样,有人会证明吗?
编辑 这是可能的
编辑:最终 - 解决方案
这是我野蛮地黑客攻击的最终结果
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();
Run Code Online (Sandbox Code Playgroud)
Tim*_*ora 11
定义这样一个函数的一种方法:
Func<bool, string> getResult = ( a ) => {
if (a)
return "a";
return "b";
}
Run Code Online (Sandbox Code Playgroud)
然后你可以调用:string foo = getResult( true );.作为委托,可以在需要时存储/传递和调用它.
例:
string Foo( Func<bool, string> resultGetter ){
return resultGetter( false );
}
Run Code Online (Sandbox Code Playgroud)
您还可以关闭范围内的变量:
bool a = true;
Func<string> getResult = () => {
if (a)
return "a";
return "b";
}
string result = getResult();
Run Code Online (Sandbox Code Playgroud)