星期三, 8月 12, 2009

幫 Nullable<T> 寫個 TryParse

不知大家常不常用 TryParse 這個 method, 最近在用時發現 Nullable<T> 沒有 TryParse 的 method..心裡想來寫一個好了..不過話說太陽底下沒有新鮮事..所以要寫前先 google 一下..確保不會做人家做過得白功..survey後發現..哈..已經有 Steve Michelotti 前輩先寫好了..所以拿他出來介紹給大家..跟著用就行了..

public static class utility
{
private delegate bool TryParseDelegate<T>(string s, out T result);
private static bool TryParseNullable<T>(string s, out Nullable<T> result,
TryParseDelegate<T> tryParse) where T : struct
{
if (string.IsNullOrEmpty(s))
{
result = null;
return true;
}
else
{
T temp;
bool success = tryParse(s, out temp);
result = temp;
return success;
}
}

/// 接下來就照著呼叫上面寫你需要的mothod就行了..我先寫一個int?的
public static bool TryParseInt(string s, out Nullable<int> result)
{
return TryParseNullable<int>(s, out result, int.TryParse);
}
}

使用這樣就可以用了..

int? temp;
string str = "";
utility.TryParseInt(str, out temp);
Response.Write(temp.HasValue ? temp.Value : 10);

要感謝幫我們寫好又放出來的前輩..可以讓我們可以省很多時間..

沒有留言: