我可以扩展int.TryParse方法
本文关键字:方法 TryParse int 扩展 我可以 | 更新日期: 2023-09-27 18:09:08
我希望我有以下方法
int num;
int.TryParse("5",out num, 10);
将执行与TryParse相同的操作,但如果解析失败,则额外执行。out参数将获得默认值10
我可以实现它吗?
使用扩展方法我可以实现以下内容:
int num;
num.TryParse("5",out num, 10);
但是这看起来与其他TryParse方法不同。
不能向现有的类添加静态方法,但是可以向自己的类添加自己的静态方法,例如:
public static class MyConversions
{
public static bool TryParse(string value, out int num, int defaultValue)
{
...
}
}
不编写辅助方法的一行代码是:
int num = int.TryParse("5", out num) ? num : 10;
这里是一个字符串扩展方法:http://neue.cc/2010/04/09_251.html
您可以为string创建一个扩展方法:
int num;
"5".TryParse(out num, 10);
没有办法实现静态扩展方法。看看这个问题:静态扩展方法
方法:
a.在非int型字符串上实现扩展方法:
public static int Parse(this string s, int defaultValue) {
int result;
return Int32.TryParse(s,out result) ? result : defaultValue;
}
...
int num = "5".Parse(10); //
b。使用TryParse(string, out int, int)方法实现您自己的IntUtil类
你不能创建静态的扩展方法,所以你不能做你想做的。
如果你真的不喜欢你到目前为止得到的(非静态方法),那么你可以按照@Jamiec的答案用静态方法创建你自己的类
TryParse返回一个布尔值,表示解析是否成功。所以:
int num;
if (!num.TryParse("5", out num))
{
num = 10;
}
你不能使用它作为一个扩展方法,但你仍然可以把它作为一个静态方法。
不能扩展TryParse
。因为它是一个静态方法,而且因为Int32
是一个结构体,所以不能继承。
你可以自己写扩展方法