匿名方法不起作用

Dan*_*dor -1 c#

ComboBoxEdit encoderCombo =
{
   if (slot==1) return cmbEncoder1; 
   else if (slot==2) return cmbEncoder2; 
   else if (slot==3) return cmbEncoder3; 
   else return cmbEncoder4;
};
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 5

为什么不直接内联整个事情并摆脱匿名方法?

ComboBoxEdit encoderCombo = slot == 1 ? cmbEncoder1 :
                            slot == 2 ? cmbEncoder2 :
                            slot == 3 ? cmbEncoder3 :
                            cmbEncoder4;
Run Code Online (Sandbox Code Playgroud)

如果你真的必须使用匿名方法,你可以做类似的事情:

Func<ComboBoxEdit> encoderCombo = () => 
                            slot == 1 ? cmbEncoder1 :
                            slot == 2 ? cmbEncoder2 :
                            slot == 3 ? cmbEncoder3 :
                            cmbEncoder4;
Run Code Online (Sandbox Code Playgroud)

这将捕获slot闭包中的值(当事情变得更复杂时,可能会导致不可预测的行为).

  • @Daniel - "他们不想进入我的键盘"??? 这没有任何意义! (2认同)