2014-01-17 218 views
2

我這樣做是正確的嗎?我很想知道它失敗的可能原因?C#.NET檢查對象是否爲空

Object obj = Find(id); //returns the object. if not found, returns null 
if (!Object.ReferenceEquals(obj, null)) 
{ 
    //do stuff 
} 
else 
{ 
    //do stuff 
} 

查找方法(使用ORM Dapper)。對此進行單元測試,我相信這種方法沒有問題。

public Object Find(string id) 
{ 
    var result = this.db.QueryMultiple("GetDetails", new { Id = id }, commandType: CommandType.StoredProcedure); 
    var obj = result.Read<Object>().SingleOrDefault(); 
    return obj; 
} 
+5

看起來不錯,但你也可以使用'obj!= null' –

+0

'obj'的類型是什麼?它是一個引用類型還是值類型? – ekad

+0

它是一個參考類型。它也失敗'obj!= null' – user

回答

14

試試這個:

Object obj = Find(id); //returns the object. if not found, returns null 
    if (obj != null) 
    { 
     //do stuff when obj is not null 
    } 
    else 
    { 
     //do stuff when obj is null 
    } 
1

我會做以下。爲什麼不必要地否定空檢查?

Object obj = Find(id); //returns the object. if not found, returns null 

if (obj == null) 
{ 
     //do stuff when obj is null 
} 
else 
{ 
     //do stuff when obj is not null 
}