2011-01-05 52 views
0

可能重複:
Static extension methods製作擴展方法

所以我知道,擴展方法是對象實例只在做

public static string stringBig(this string inString) { 
    return inString.ToUpper(); 
} 

僅適用於string

不過,我想使功能類似Double.TryParse的東西,這樣我就不必做

Double myDouble = someOtherDouble.DoubleParseDifferent("4.324802348203498"); 

我希望能夠做到像

Double myDouble = Double.DoubleParseDifferent(someRandomString); 

現在我知道我實際上無法做到這一點,那麼我會採取哪些替代方法或方法來解決這個問題。

+1

可能dupe http://stackoverflow.com/questions/866921/static-extension-methods – Brook 2011-01-05 20:19:26

+0

@Brook是的,這是一個愚蠢的,我看着永遠,沒有發現這個問題。謝謝:) – msarchet 2011-01-05 20:23:10

回答

2

唯一可能的替代執行的方法TryParse我能想到的(因爲你所要求的是不可能的)將創建一個正常的靜態方法,但返回一個可空

public static double? TryParseEx(string value) { /* new improved parse code here */ } 

var result = TryParseEx("1234.56"); 

這樣,你就不會需要像正常TryParse一個輸出參數...

如果!result.HasValue,然後解析沒有成功。否則,只需閱讀result.Value屬性即可獲得解析結果。

+0

嗯,這可能是我可能爲此做的思維方式。我知道我所要求的是不可能的,這就是爲什麼我想要其他方式。 – msarchet 2011-01-05 21:04:44

3

可以使一類具有相似名稱:

static class MyDouble { ... } 
1

既然你添加一個字符串解析方法,擴展程序爲何不添加到字符串

public static Double ParseDifferent(this string inString) { 
    return ... 
} 
+0

這只是一個例子,但像Double.Parse – msarchet 2011-01-05 20:22:22

+0

不過,向源類型添加Parse方法是有道理的。否則,你自己的靜態MyDouble類作爲@SLaks提到的是最好的選擇。 – 2011-01-05 21:03:33