C# 在C中将字符串转换为Int时出错#
首先,我对C比较陌生,但我正在尝试将字符串转换为Int。我在Visual Studio中没有遇到错误,但当我实际尝试在Sitecore中预览我的页面时,我遇到了一个错误。错误为System.FormatException:输入字符串的格式不正确 这是我的代码:C# 在C中将字符串转换为Int时出错#,c#,sitecore,C#,Sitecore,首先,我对C比较陌生,但我正在尝试将字符串转换为Int。我在Visual Studio中没有遇到错误,但当我实际尝试在Sitecore中预览我的页面时,我遇到了一个错误。错误为System.FormatException:输入字符串的格式不正确 这是我的代码: public string numColumnStr = ""; numColumnStr = parameters.columns; int numColumns = 2; if (num
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (numColumns != null)
numColumns = Convert.ToInt32(numColumnStr);
我希望列的默认值为2。在我看来,你检查的变量是错误的。也许你的意思是:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!String.IsNullOrEmpty(numColumnStr))
numColumns = Convert.ToInt32(numColumnStr);
在我看来,您检查的变量是错误的。也许你的意思是:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!String.IsNullOrEmpty(numColumnStr))
numColumns = Convert.ToInt32(numColumnStr);
看起来这个字符串不是一个有效的整数 使用
tryParse()
bool parsed = int.TryParse(numColumnStr,out numColumns);
if(parsed)
// do something with numColumns here
请参见看起来,即将出现的字符串不是有效的整数
使用tryParse()
bool parsed = int.TryParse(numColumnStr,out numColumns);
if(parsed)
// do something with numColumns here
请参见我做了两个更改,首先我使用了tryparse而不是convert
其次,我做了一个判断调用,您的意思是将字符串与null进行比较,而不是将整数进行比较。因此,我更新了该行以检查字符串是否为null或空
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
我做了两个更改,第一个是使用tryparse而不是convert
其次,我做了一个判断调用,您的意思是将字符串与null进行比较,而不是将整数进行比较。因此,我更新了该行以检查字符串是否为null或空
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
虽然您的代码相当笨拙,但只需稍作修改即可:
更改:
if (numColumns != null)
致:
虽然您的代码相当笨拙,但只需稍作修改即可:
更改:
if (numColumns != null)
致:
以下是您需要的c#代码:
int numColumns = 2; // default value
int.TryParse(parameters.columns, out numColumns);
现在我怀疑parameters.columns实际上并没有指向您所期望的内容。如果值为null或为空,则将抛出您得到的错误。以下是您需要的c代码:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
int numColumns = 2; // default value
int.TryParse(parameters.columns, out numColumns);
现在我怀疑parameters.columns实际上并没有指向您所期望的内容。如果该值为null或为空,则会引发错误。由于您使用的是Sitecore,因此也可以使用Sitecore.Kernel.dll中的实用程序函数:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
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;
}
由于您使用的是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;
}
什么是参数.列
?我也不明白,当您直接设置numColumns
前一行时,为什么要执行if(numColumns!=null)
…什么是参数。列
?我也不明白你为什么要在直接设置numColumns
前一行时执行if(numColumns!=null)
…啊,谢谢@Smeegs!这对我很有帮助,也很有意义。谢谢你的帮助@用户3416165,很高兴我能帮忙。如果这解决了您的问题,请确保将其标记为答案。啊,谢谢@Smeegs!这对我很有帮助,也很有意义。谢谢你的帮助@用户3416165,很高兴我能帮忙。如果这解决了您的问题,请确保将其标记为答案。感谢链接,这有助于我更好地理解概念。感谢链接,这有助于我更好地理解概念。感谢帮助@Johan Hjalmarsson感谢帮助@Johan Hjalmarsson