int num;
int.TryParse("5",out num, 10);
这将与TryParse相同,但如果解析失败,则为addtional, out参数将获得defualt值10
我可以实施吗?
使用扩展方法,我可以实现以下内容:
int num;
num.TryParse("5",out num, 10);
但这看起来与其他TryParse方法不同。
答案 0 :(得分:6)
您不能向现有类添加静态方法,但可以将自己的静态方法添加到自己的类中,例如:
public static class MyConversions
{
public static bool TryParse(string value, out int num, int defaultValue)
{
...
}
}
答案 1 :(得分:4)
没有编写辅助方法的单行代码将是:
int num = int.TryParse("5", out num) ? num : 10;
这是一个字符串扩展方法:http://neue.cc/2010/04/09_251.html
答案 2 :(得分:2)
您可以为字符串创建扩展方法:
int num;
"5".TryParse(out num, 10);
答案 3 :(得分:2)
无法实现静态扩展方法。看看这个问题:Static extension methods
方法:
一个。对字符串而不是整数实现扩展方法:
public static int Parse(this string s, int defaultValue) {
int result;
return Int32.TryParse(s,out result) ? result : defaultValue;
}
...
int num = "5".Parse(10); //
湾使用TryParse(string,out int,int)方法实现自己的IntUtil类。
答案 4 :(得分:1)
你不能创建静态扩展方法,所以不幸的是你不能做你想做的事。
如果你真的不喜欢你到目前为止所拥有的(非静态方法),那么你可以根据@Jamiec的回答用静态方法创建自己的类。
答案 5 :(得分:1)
TryParse返回一个布尔值来说明解析是否有效。所以:
int num;
if (!num.TryParse("5", out num))
{
num = 10;
}
您不能将其用作扩展方法,但您仍然可以将其作为静态方法使用。
答案 6 :(得分:1)
您无法展开TryParse
。两者都因为它是一个静态方法,因为Int32
是一个结构,不能继承。
您可以编写自己的extension method。