我想用System.ComponentModel.TypeConverter來將一堆System.Strings強制轉換爲不同的類型。這些字符串可能是或者可能不是TypeConverter的有效格式,所以我想在嘗試類型轉換之前找到一種方法來檢查它們的有效性(以避免必須依靠捕獲System.FormatException來指示String格式不正確)。C#TypeConverters和IsValid
很好,這就是爲什麼TypeConverters有一個IsValid()方法,對吧?那麼我遇到了IsValid()將返回true的問題,但是當我調用ConvertFromString()時,它會引發異常。下面是一些代碼來重現問題:
System.ComponentModel.DateTimeConverter DateConversion =
new System.ComponentModel.DateTimeConverter();
String TheNumberZero = "0";
if (DateConversion.IsValid(TheNumberZero))
Console.WriteLine(DateConversion.
ConvertFromString(TheNumberZero).ToString());
else
Console.WriteLine("Invalid.");
當我運行此,該行
Console.WriteLine(DateConversion.
ConvertFromString(TheNumberZero).ToString());
拋出與消息
0 is not a valid value for DateTime.
一個System.FromatException是什麼目的IsValid()方法是否在嘗試類型轉換之前檢查轉換輸入?有什麼方法可以檢查字符串的有效性嗎?不必捕捉FormatException?
另見https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93559 –
這是否意味着沒有辦法,而不訴諸異常處理的時間提前算出這個? – brian
另外,很棒的鏈接,謝謝Pavel – brian