我觉得每次使用TryParse它都会导致代码有点丑陋.主要是我这样使用它:
int value;
if (!int.TryParse(someStringValue, out value))
{
value = 0;
}
Run Code Online (Sandbox Code Playgroud)
是否有一些更优雅的解决方案来解析所有基本数据类型,具体是有一种方法可以在一行中进行故障安全解析吗?通过故障保护我假设如果解析失败而没有异常,则设置默认值.
顺便说一句,这是针对我必须做一些操作的情况,即使解析失败,只需使用默认值.
dav*_*v_i 129
这是有效的,如果你喜欢单行,你可能更喜欢它:
int i = int.TryParse(s, out i) ? i : 42;
Run Code Online (Sandbox Code Playgroud)
如果它无法解析字符串,则将值设置为ito ,否则设置为.42si = i
use*_*107 18
直接扩展方法怎么样?
public class Extensions
{
public static int? TryParse(string this Source)
{
if(int.tryparse ....
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
v = "234".TryParse() ?? 0
Run Code Online (Sandbox Code Playgroud)
ska*_*ats 15
您可以编写自己的方法,以获得更适合您的解决方案.我偶然发现了Maybe包含这些TryParse方法的类.
int? value = Maybe.ToInt("123");
if (value == null)
{
// not a number
}
else
{
// use value.Value
}
Run Code Online (Sandbox Code Playgroud)
或者在线指定默认值:
int value = Maybe.ToInt("123") ?? 0;
Run Code Online (Sandbox Code Playgroud)
观察Nullable<int>/ int?和之间的区别int.
有关详细信息,请参阅http://www.kodefuguru.com/post/2010/06/24/TryParse-vs-Convert.aspx
Ant*_*ula 13
在C#6 C#7 声明表达式中有一个很好的小功能,所以在C#7而不是:
int x;
if (int.TryParse("123", out x))
{
DoSomethingWithX(x);
}
Run Code Online (Sandbox Code Playgroud)
我们可以用:
if (int.TryParse("123", out int x))
{
DoSomethingWithX(x);
}
Run Code Online (Sandbox Code Playgroud)
对我来说太好了:)
| 归档时间: |
|
| 查看次数: |
25134 次 |
| 最近记录: |