在C#中将String转换为Int时出错

时间:2014-07-09 15:45:24

标签: c# sitecore

首先我对C#相当新,但我正在尝试将字符串转换为Int。我在Visual Studio中没有错误,但当我实际尝试在Sitecore中预览我的页面时,我得到一个错误。错误是System.FormatException:输入字符串的格式不正确。

这是我的代码:

public string numColumnStr = "";
        numColumnStr = parameters.columns;
        int numColumns = 2;
        if (numColumns != null)
            numColumns = Convert.ToInt32(numColumnStr);

我希望列的默认值为2.我有

6 个答案:

答案 0 :(得分:1)

在我看来你正在检查错误的变量。也许你的意思是这样做:

public string numColumnStr = "";
    numColumnStr = parameters.columns;
    int numColumns = 2;
    if (!String.IsNullOrEmpty(numColumnStr))
        numColumns = Convert.ToInt32(numColumnStr);

答案 1 :(得分:1)

看起来即将到来的字符串不是有效的整数。

使用tryParse(),如果它被成功解析或者它是一个有效的整数,它将返回一个标记true

bool parsed = int.TryParse(numColumnStr,out numColumns);

if(parsed)
    // do something with numColumns here

请参阅Details on MSDN

答案 2 :(得分:1)

我做了两处更改,首先我使用了tryparse而不是convert。

其次,我做了判断调用,你打算将字符串比作null,而不是整数。所以我更新了那一行来检查字符串是空还是空。

public string numColumnStr = "";
        numColumnStr = parameters.columns;
        int numColumns = 2;
        if (!string.IsNullOrEmpty(numColumnStr))
            int.TryParse(numColumnStr, out numColumns);

答案 3 :(得分:1)

虽然你的代码非常尴尬,但它可以进行一些小改动:

变化:

if (numColumns != null)

为:

if (numColumnStr != null)

答案 4 :(得分:0)

这是您需要的c#代码:

int numColumns = 2; // default value
int.TryParse(parameters.columns, out numColumns);

现在我怀疑parameters.columns实际上并没有指向你的期望。如果值为null或为空,则获得的错误是抛出的错误。

答案 5 :(得分:0)

由于您使用的是Sitecore,您还可以使用Sitecore.Kernel.dll中的实用程序功能:

int numColumns = Sitecore.MainUtil.GetInt(parameters.columns, 2)

FYI,该函数内部执行以下操作:

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;
}