小编Via*_*nov的帖子

在System.Linq.Expressions中切换没有案例(但默认情况下)

我试图用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回购提交了一个问题

.net c# linq-expressions

11
推荐指数
1
解决办法
562
查看次数

标签 统计

.net ×1

c# ×1

linq-expressions ×1