我有以下的是寫在2.0框架object.ToString()時,對象爲空行爲
SqlConnection mySqlConnection = new SqlConnection("Connection String");
mySqlConnection.Open();
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = "SELECT OutputType FROM Reports WHERE ReportID = 'NEWREP'";
return mySqlCommand.ExecuteScalar().ToString();
當是SQL查詢中沒有記錄,會的ExecuteScalar返回null的對象,可以能夠轉換的C#代碼通過ToString()將空對象轉換爲字符串。
沒有發生任何異常。
但是,當針對.Net 4.0的相同代碼拋出異常時,「對象引用未設置爲對象的實例」。
任我可以能夠使用
return mySqlCommand.ExecuteScalar() as string;
或
return (string)mySqlCommand.ExecuteScalar();
來處理異常在4.0
但我想知道爲什麼沒有2.0拋出的異常?這種行爲的任何線索?
在此先感謝。
ExecuteScalar將返回null對象,並且可以通過ToString()將空對象轉換爲字符串 - 這不可能,重新檢查pls 2.0解決方案,看起來它返回了一些東西 – tym32167
是的,我沒有購買那也是。那將是一個突破性的改變。 –
它不能在.net2.0重新檢查,這是不可能的,因爲其他人說。對於解決方案,您可以使用內聯空值檢查,例如'return mySqlCommand.ExecuteScalar()?. ToString()? 「';' – Franck