【发布时间】:2012-01-25 00:05:39
【问题描述】:
我正在寻找一个将字符串转换为可为空的 int 的函数。但是这个必须返回一个布尔值。
【问题讨论】:
-
这不是一个功能规范。什么字符串应该产生空值?布尔值究竟是如何涉及的?
我正在寻找一个将字符串转换为可为空的 int 的函数。但是这个必须返回一个布尔值。
【问题讨论】:
这样的?
public int? NullableInt(string str)
{
int i;
if (int.TryParse(str, out i))
return i;
return null;
}
【讨论】:
这应该可以解决问题:
string str = "1234";
int number = 0;
int.TryParse(str, out number);
Nullable<int> result = new Nullable<int>(number);
【讨论】:
可能是这样的:
public static int? TryParse(string str)
{
int result;
if (Int32.TryParse(str, out result))
{
return result;
}
else
{
return null;
}
}
如果解析失败,则返回空值,否则返回解析成功的值。
【讨论】:
您始终可以将string 解析为int 并将结果分配给int? 例如:
string myNumericString = "1234";
int? x = Int32.Parse(myNumericString);
你也可以试试:
int? x = null;
int result;
if (Int32.TryParse(myNumericString, out result) )
{
x = result;
}
// Then you can check x.HasValue
【讨论】:
Int32.Parse(null) 引发ArgumentNullException。如果成功,它总是返回int。所以存储到int? 完全没有效果。
myNumericString 是"1234")。为了安全起见,你应该使用Int32.TryParse(string, out int),它返回true,如果解析成功,则将解析后的整数值赋给out参数。