2017-04-15 62 views
0

的大部分時間,當我用C#工作,需要驗證空或空字符串我使用的方法:驗證String.IsNullOrEmpty在C#與三元操作

if (String.IsNullOrEmpty(s)) 
     return "is null or empty"; 
    else 

,但現在我需要用這個以這樣的方式

string value= data.value==null?DBNull.Value:data.value; 

我嘗試在最後一句同時使用得到這個

string value= String.IsNullOrEmpty(data.value)?DBNull.Value:data.value; 

但總是返回TR甚至在屬性data.value中沒有任何價值,BTW data.value是一個字符串,你能告訴我我的句子是對的還是什麼似乎是問題?

+2

'IsNullOrWhitespace'可能是? –

+0

你的問題沒有意義。你的代碼似乎說「如果value爲null,那麼使用null否則使用值是多餘的。 – DavidG

+0

@AmitKumarGhosh只是一個問題,IsNullOrWhitespace概括了IsNullOrEmpty的權利?在我的場景中最好使用IsNullOrWhitespace,因爲我不知道屬性值爲 –

回答

3

首先你不能使用string value = DBNull.Value,因爲這些類型不兼容。你必須投回到常見的類型是System.Object所以後來分配成爲這其中採用鑄造,以確保類型兼容性:

object value = String.IsNullOrEmpty(data.value) 
    ? (object) DBNull.Value 
    : (object) data.value; 

如果你想檢查的白色空間,您可以使用IsNullOrWhiteSpace,而不是IsNullOrEmpty

+0

hello,data.value屬性是一個字符串,我想要將該屬性的值(data.value)保存到的字段是一個varchar,並且在SQL Anywhere數據庫中定義,此數據庫接受NULL作爲null或空值字符串,所以我最後的問題是:我必須用這種方式使用對象類型:string value = String.IsNullOrEmpty(data.value)? (string)DBNull.Value:(string)data.value?或者我必須使用它與(對象),而不是你定義的字符串? –

+0

@PabloMayora - 我不確定你在問什麼,但根據你最近的問題歷史記錄:'OleDbParameter.Value'類型爲'System.Object',如果你想傳遞'null',你必須通過'DBNull.Value '所以在我的「OleDbParameter.Value」答案中分配上面的實例'value'就是如何做到的。 – Igor