检查对象的属性为null

时间:2014-07-02 05:30:48

标签: c# .net

我有List个相册对象(例如相册)。我检查对象的属性是否为空。

只是示例:

if (albums.Last() != null 
      && albums.Last().Photos != null 
      && albums.Last().Photos.Description != null) { //action }

我可以在代码中缩短检查时间吗?

4 个答案:

答案 0 :(得分:4)

将其包装在一个函数中:

public static bool IsInitialized(a Album) {
    return a != null &&
        a.Photos != null &&
        a.Photos.Description != null;
}

然后你的主叫代码变成:

var album = albums.LastOrDefault();

if (Album.IsInitialized(album)) {
    // its fine
}

答案 1 :(得分:3)

你不能。

顺便说一句:

  1. 使用vars而不是一直调用函数(Last())。

  2. 使用LastOrDefault()并防止崩溃。

    var lastAlbum = albums.LastOrDefault();
    if(lastAlbum != null && lastAlbum.Photos != null && lastAlbum.Photos.Description != null){//action}
    

答案 2 :(得分:2)

您可以使用扩展方法 -

public static class ListExtension {
     public static bool IsLastPhotoNotNull(this List<Album> albums){
          var album = albums.LastOrDefault();
          return album != null && album.Photos != null && album.Photos.Description != null;
     }
}

然后用列表

调用它
List<Album> albums;

if(!albums.IsLastPhotoNotNull()){
    //...do other actions
}

答案 3 :(得分:1)

更短,没有。但更高效,是的。

您多次调用Last()方法。如果该调用涉及数据库操作,则可能会损害性能。

将方法拉出if

var last = albums.Last();
if (last != null 
  && last.Photos != null 
  && last.Photos.Description != null)
{ //action }