在c#中将String转换为Int时出现错误
本文关键字:错误 Int 中将 String 转换 | 更新日期: 2023-09-27 18:12:06
首先,我对c#相当陌生,但我正在尝试将字符串转换为Int。我在Visual Studio中没有错误,但当我实际上试图在Sitecore中预览我的页面时,我得到一个错误。错误是System。FormatException:输入字符串格式不正确。
这是我的代码:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (numColumns != null)
numColumns = Convert.ToInt32(numColumnStr);
我希望列的默认值为2。然后是
我做了两个更改,首先我使用tryparse而不是convert。
第二,我做了一个判断,你的意思是比较字符串为空,而不是整数。所以我更新了这一行来检查字符串是空还是空。
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
在我看来,您正在检查错误的变量。也许你想这样做:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!String.IsNullOrEmpty(numColumnStr))
numColumns = Convert.ToInt32(numColumnStr);
虽然您的代码相当笨拙,但只需做一个小小的更改:
改变:
if (numColumns != null)
:
if (numColumnStr != null)
看起来后面的字符串不是一个有效的整数。
使用tryParse()
,如果它被成功解析或者它是一个有效的整数,它将返回一个标志true
:
bool parsed = int.TryParse(numColumnStr,out numColumns);
if(parsed)
// do something with numColumns here
参见 MSDN详细信息
这是你需要的c#代码:
int numColumns = 2; // default value
int.TryParse(parameters.columns, out numColumns);
现在我怀疑参数。列实际上并不指向您所期望的内容。如果该值为null或空,则会抛出该错误。
既然您正在使用Sitecore,您也可以使用Sitecore. kernel .dll中的实用程序函数:
int numColumns = Sitecore.MainUtil.GetInt(parameters.columns, 2)
供参考,函数内部执行以下操作:
public static int GetInt(string value, int defaultValue)
{
int result;
if (value == null || value.Length == 0 || !int.TryParse(value, out result))
return defaultValue;
else
return result;
}