缩短并只是条件语句?

时间:2018-12-21 09:37:46

标签: c#

我有以下声明(有效):

x => x is View v && (x as View).IsTemplate

IsTemplate属性仅存在于派生类型View上

我想将其缩短为:

x => x is View v & v.IsTemplate

但是我不能,我得到错误“使用未分配的局部变量”。 尽管智能感知给了我IsTemplate属性。 这是不可能的,还是我错过了语法?看起来好多了,我看不到任何逻辑问题。

2 个答案:

答案 0 :(得分:6)

这是因为您在第二个代码中使用了&运算符,所以即使左边的操作数的值为false也将评估右边的值。您应该将其更改为&&

x => x is View v && v.IsTemplate

答案 1 :(得分:4)

如果您之前是C#7,请使用Selman的答案。

x => (x as View)?.IsTemplate ?? false;