我在一段代碼中發現了一個奇怪的問題,即使它的參數與數據源中的記錄匹配,即使特定的SQL查詢沒有產生預期的輸出。我決定進入下面的測試表達式到立即窗口:爲什麼SqlParameter名稱/值構造函數將0視爲null?
new SqlParameter("Test", 0).Value
這給了null
結果,這讓我抓我的頭。看起來SqlParameter
構造函數將零視爲空值。以下代碼會產生正確的結果:
SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0
任何人都可以解釋此行爲嗎?它有點故意嗎?如果是這樣,它可能相當危險的......
關於此主題的進一步閱讀:http://stackoverflow.com/questions/14224465/compiler-value-type-resolution-and-hardcoded-0-integer-values – RLH