我试图用System.Linq.Expressions创建一个switch表达式:
var value = Expression.Parameter(typeof(int));
var defaultBody = Expression.Constant(0);
var cases1 = new[] { Expression.SwitchCase(Expression.Constant(1), Expression.Constant(1)), };
var cases2 = new SwitchCase[0];
var switch1 = Expression.Switch(value, defaultBody, cases1);
var switch2 = Expression.Switch(value, defaultBody, cases2);
Run Code Online (Sandbox Code Playgroud)
但在最后一行我得到一个ArgumentException:
需要非空收集.参数名称:案例
这个例外的原因是什么?这可能是Expression.Switch(...)中的一个错误?
在C#中,只有"默认"部分的开关是正确的:
switch(expr) {
default:
return 0;
}//switch
Run Code Online (Sandbox Code Playgroud)
UPD:我已经向GitHub上的CoreFX回购提交了一个问题