O.O*_*O.O 44 c# asp.net .net-4.0
int.TryPrase
是伟大的,但只有一个问题......至少需要使用两行代码:
int intValue;
string stringValue = "123";
int.TryParse(stringValue, out intValue);
....
Run Code Online (Sandbox Code Playgroud)
当然我可以这样做:
string stringValue = "123";
int intValue = Convert.ToInt32(string.IsNullOrWhiteSpace(stringValue) ? 0 : stringValue);
Run Code Online (Sandbox Code Playgroud)
只需一行代码.
我怎样才能让int.TryParse使用一个衬里,或者还有第三种选择?
谢谢!
Bezden最好地回答了这个问题,但实际上我计划使用Reddogs解决方案.
Vla*_*den 69
int intValue = int.TryParse(stringValue, out intValue) ? intValue : 0;
Run Code Online (Sandbox Code Playgroud)
Red*_*dog 40
也许使用扩展方法:
public static class StringExtensions
{
public static int TryParse(this string input, int valueIfNotConverted)
{
int value;
if (Int32.TryParse(input, out value))
{
return value;
}
return valueIfNotConverted;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
string x = "1234";
int value = x.TryParse(0);
Run Code Online (Sandbox Code Playgroud)
编辑:当然,你可以添加明显的重载,如果这是你的愿望,已经将默认值设置为零.
Dan*_* Z. 14
这个答案仅适用于至少使用C#7的人.
您现在可以内联声明out参数.
int.TryParse("123", out var result);
Run Code Online (Sandbox Code Playgroud)
为证明它有效,您可以运行以下dotnetfiddle.
if (int.TryParse("123", out var result)) {
//do something with the successfully parsed integer
Console.WriteLine(result);
} else {
Console.WriteLine("That wasn't an integer!");
}
Run Code Online (Sandbox Code Playgroud)
https://dotnetfiddle.net/nn9955
归档时间: |
|
查看次数: |
16568 次 |
最近记录: |