我有List
个相册对象(例如相册)。我检查对象的属性是否为空。
只是示例:
if (albums.Last() != null
&& albums.Last().Photos != null
&& albums.Last().Photos.Description != null) { //action }
我可以在代码中缩短检查时间吗?
答案 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)
你不能。
顺便说一句:
使用vars而不是一直调用函数(Last()
)。
使用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 }