我是新手(我读过或尝试过的都没有用)。
我希望使用形式的函数:
Func<string, Action> getAction = (editingmark) =>
{
Action doit;
switch (editingmark)
{
case ">":
doit = editRx; <--ERROR OCCURS HERE.
break;
}
return doit;
};
其中 editRx 具有以下形式:
Action editRx = () =>
{
};
我得到:
字段初始值设定项不能引用非静态字段、方法或属性 ...editRx
要做什么? (还有更好的方法吗?)
感谢所有帮助。
最佳答案
看起来您正在尝试将 getAction
初始化为一个字段,如下所示:
public class Foo
{
Action editRx = () =>
{
};
Func<string, Action> getAction = (editingmark) =>
{
Action doit = null;
switch (editingmark)
{
case ">":
doit = editRx;
break;
}
return doit;
};
}
这里的问题是,您正尝试使用围绕 editRx
的闭包来初始化 getAction
,但您不能在字段初始化程序中执行此操作。尝试将其放入您的构造函数中:
public class Foo
{
Action editRx = () =>
{
};
Func<string, Action> getAction;
public Foo()
{
this.getAction = (editingmark) =>
{
Action doit;
switch (editingmark)
{
case ">":
doit = editRx;
break;
}
return doit;
};
}
}
另请注意,像这样使用委托(delegate)对于 C# 来说有点不合常规。您很可能可以将其重构为常规方法或其他 OOP 构造,并使您的代码更加清晰易懂。一旦你的代码工作我建议你在CodeReview.SE上询问关于如何将代码重新组织成更惯用的东西。
关于c# - 如何从函数返回一个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25824947/