2013-12-17 11 views
1

我想说的是,如果此属性是(Null或Equals“”或包含“ImageNotAvailable”)然后继续并执行一些操作。但是当我尝试使用下面的代码时,我得到一个对象引用错误。我希望通过在测试开始时加入(Publisher.ThumbnailURL == null),其他测试将被忽略,但我会在上面看到错误。如果第一个测试为空,则命令if语句忽略以下测试

if ((Publisher.ThumbnailURL == null) | (Publisher.ThumbnailURL == "") | (Publisher.ThumbnailURL.Contains("ImageNotAvailable"))) 

我可以简单地划分这些成“如果别人的”,但没有指定如果第一次检测为空,不要试图找出如果语句的其余部分,这将导致它的方式错误

回答

11

使用||而不是|

if ((Publisher.ThumbnailURL == null) || (Publisher.ThumbnailURL == "") || (Publisher.ThumbnailURL.Contains("ImageNotAvailable"))) 

||操作者

的条件或运算符(||)执行逻辑或布尔其的 操作数,但仅评估是否必要其第二操作数。

注意,你也可以使用string.IsNullOrEmpty由拉斐尔奥尔索斯评论:

if (string.IsNullOrEmpty(Publisher.ThumbnailURL) || Publisher.ThumbnailURL.Contains("ImageNotAvailable")) 
+3

'string.IsNullOrEmpty'对于前两种测试来说是不错的选择。 –

+0

@RaphaëlAlthaus:好主意,相应地编辑我的答案。 –

+0

非常感谢你们 - 我怀疑这会是一个简单的答案。 – wotney

3

是的,使用||以尽可能早地评估的表达,也使用String.IsNullOrEmpty将会使表述更加简单:

if (String.IsNullOrEmpty(Publisher.ThumbnailURL) || (Publisher.ThumbnailURL.Contains("ImageNotAvailable")))