2013-07-11 80 views
1

我試圖從VB.Net轉換爲C#從sql數據庫讀取數據。以下代碼給我一個錯誤。 「不能將類型'字符串'隱式轉換爲'bool'」。它在VB中工作得很好。我如何將此語句轉換爲C#?
不能隱式地將類型'字符串'轉換爲'bool'CheckBox

chkNewEmployee.Checked = dr["chkNewEmployee"].ToString(); 
+0

什麼是底層數據庫類型?位?字符? – Curt

+0

其直接轉換conversion.ToBoolean(dr [「chkNewEmployee」]) – Jack

回答

7
chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]); 

ToBoolean

,這反映了通過調用爲基礎類型的值的 IConvertible.ToBoolean方法返回的值。 如果 值爲null,則該方法返回false。

根據您的需求,你可能想嘗試bool.Parsebool.TryParse

UPDATE

bool.Parsebool.TryParseConvert.ToBoolean

  • 是不區分大小寫
  • 忽略前緣和後空白

bool.Parse

  • 正確要麼是truefalse
  • 在失敗的轉換

bool.TryParse的情況下拋出FormatException

  • 正確要麼truefalse
  • 沒有拋出異常失敗轉換的情況下
  • 回報true如果轉換成功,否則false
  • 轉換結果通過第二個參數保存(out bool result

Convert.ToBoolean

  • 正確truefalsenull(在null情況下返回false
  • 失敗轉換的情況下拋出FormatException
+0

謝謝。您的Convert.ToBoolean建議工作。 –

+0

@walkhard如果我使用三種方法之一,有什麼區別? 'Convert.ToBoolean'或'bool.Parse'或'bool.TryParse' – indago

+1

@indago我已經更新了我的答案,它應該明確區別。 – Zbigniew

0

我想嘗試的下面的代碼段。看看它是否有效。如果不是,它應該返回一個異常。

try { 
    chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]); 
} 
catch (FormatException) { 
    Console.WriteLine("Bad Format"); 
    } 
    catch (InvalidCastException) { 
    Console.WriteLine("No Conversion"); 
    } 
0

只是做到這一點:

chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]); 

它完成。

相關問題