2011-01-05 73 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