我有以下声明(有效):
x => x is View v && (x as View).IsTemplate
IsTemplate属性仅存在于派生类型View上
我想将其缩短为:
x => x is View v & v.IsTemplate
但是我不能,我得到错误“使用未分配的局部变量”。 尽管智能感知给了我IsTemplate属性。 这是不可能的,还是我错过了语法?看起来好多了,我看不到任何逻辑问题。
答案 0 :(得分:6)
这是因为您在第二个代码中使用了&
运算符,所以即使左边的操作数的值为false
也将评估右边的值。您应该将其更改为&&
x => x is View v && v.IsTemplate
答案 1 :(得分:4)
如果您之前是C#7,请使用Selman的答案。
x => (x as View)?.IsTemplate ?? false;