編輯:只是要清楚,我不是問(Null
vs DBNull.Value
)或(IsDBNull
vs IsNull
)。IsDBNull vs DBNull.Value,它們是一樣的嗎?
嗯,我總是用IsDBNull()
評估數據庫字段和檢查值DBNull
,但我注意到,在許多代碼示例,人們使用DBNull.Value
爲了同樣的目的。具體方法如下:
If IsDBNull(obj) Then DoSomething() ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.
另外:
if (obj == DBNull.Value) {DoSomething();}
我做了一些搜索,找出它們是否相同,或者如果有任何的差異,但找不到任何有用的文章這兩個顯示這兩個特定的評估方法在一起。
This MSDN link演示DBNull.Value.Equals
如何做同樣的事情IsDBNull
功能,但從來沒有提到/使用DBNull.Value
的評價結果顯示,在不使用Equals
功能。
所以,我真的不知道,是有其中之一,建議在這兩個選擇之間,從而任何實際的區別嗎?或者他們做的是完全一樣的東西?
第二行應該使用'Is'而不是'=',但除此之外,它們在功能上是等效的。 'IsDBNull'方法可能在內部使用第二種方法。 – jmcilhinney
[下面是.NET實現](https://github.com/Microsoft/referencesource/blob/master/System.Data/System/Data/SqlClient/SqlDataReader.cs#L2917) –
@WillRay,即實現'SqlDataReader.IsDBNull'方法,它不是問題中指定的方法。上面代碼中的方法是'Microsoft.VisualBasic.Information.IsDBNull'。 – jmcilhinney