Я использую какой-то старый код, который выполняет SQL-запрос в качестве ссылки.
В какой-то момент получается что-то вроде:
sqlDataAdapter.Fill(dataSet);
DataRow dataRow = dataSet.Tables[0].Rows[0];
Object obj = dataRow[fieldName];
Старый код делает:
string output;
if (!string.IsNullOrEmpty(obj.ToString())) { output = obj.ToString(); }
else { output = "Not Available"; }
Я изменил их на:
output = obj as string ?? "Not Available"
Но иногда это ломалось. Как я и подозревал, это происходило, когда вход был int
. Приведение в качестве int
в этих случаях решило эту проблему.
Тогда возникла другая проблема, когда для obj[fieldName]
типа int было введено нет записи. Когда я прошел через отладчик, я с удивлением обнаружил, что obj
не null
. В VS выявлено, что оно имеет значение {}
.
Какого черта {}
? Как мне сделать булеву проверку?
(в старом коде, кажется, .ToString()
возвращает ""
в этом случае и работает как положено.)