Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中将字符串转换为Int时出错#_C#_Sitecore - Fatal编程技术网

C# 在C中将字符串转换为Int时出错#

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

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

这是我的代码:

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