我有nullable int []和string。
string someStr = "123";
int? siteNumber = null;
string siteName= null;
在某些时候,我需要检查字符串是否为数字。
为此,我尝试了这个:
if (int.TryParse(someStr, out siteNumber))
{ }
else
siteName = siteDescription;
但是因为siteNumber可以为空,我得到了这个错误:
cannot convert from 'out int?' to 'out int'
如何检查字符串是否为数字,如果是,我需要将其分配给nullable int?
答案 0 :(得分:4)
您可以使用中间变量,因为out
参数类型应完全匹配。
int siteNumberTemp;
if (int.TryParse(someStr, out siteNumberTemp))
{
siteNumber = siteNumberTemp;
}
else
siteName = siteDescription;
答案 1 :(得分:4)
您可以编写自定义方法来执行此操作。
public int? TryParseNullableValues(string val)
{
int outValue;
return int.TryParse(val, out outValue) ? (int?)outValue : null;
}
答案 2 :(得分:0)
如果不使用其他变量,则无法执行此操作,因为out
参数的类型必须与参数完全匹配。
string someStr = "123";
int? siteNumber = null;
int tmp;
if (!int.TryParse(someStr.Trim(), out tmp))
{
//Do something if not parsed
}
else
{
siteNumber = tmp;
}
答案 3 :(得分:0)
最好的方法是使用此函数将字符串转换为int,无论它是否可为空。这个自定义函数将处理它。
public static Int32? CustomConvertToInt32(Object obj)
{
string _strData = CustomConvertToStringOrNull(obj);
Int32? _Nullable = null;
Int32 _data;
if (Int32.TryParse(_strData, out _data))
{
_Nullable = _data;
}
return _Nullable;
}
public static string CustomConvertToStringOrNull(Object obj)
{
string _Nullable = null;
if (obj != null)
{
if (obj.ToString().Trim() == "" || obj.ToString().Trim().ToLower() == "n/a")
{
_Nullable = null;
}
else
{
_Nullable = obj.ToString().Trim();
}
}
return _Nullable;
}
int? siteNumber = CustomConvertToInt32(someStr);