为什么C#在case块中没有局部作用域?
我在写这段代码: private static Expression<Func<Binding, bool>> ToExpression(BindingCriterion criterion) { switch (criterion.ChangeAction) { case BindingType.Inherited: var action = (byte)ChangeAction.Inherit; return (x => x.Action == action); case BindingType.ExplicitValue: var action = (byte)ChangeAction.SetValue; return (x => x.Action == action); default: // TODO: Localize errors throw new InvalidOperationException("Invalid criterion."); } } 惊讶地发现一个编译错误: 此范围中已经定义了一个名为“ action”的局部变量 这个问题很容易解决。只是摆脱第二个var就可以了。 …