如何将字符串转换为int?

时间:2012-07-03 19:25:48

标签: c#

  

可能重复:
  How can I convert String to Int?

public List<int> GetListIntKey(int keys)
{
        int j;
        List<int> t;
        t = new List<int>();
        int i;
        for (i = 0; ; i++)
        {
            j = GetKey((keys + i).ToString());
            if (j == null)
            {
                break;
            }
            else
            {
                t.Add(j);
            }
        }
        if (t.Count == 0)
            return null;
        else
            return t;
}

问题在于:

j = GetKey((keys + i).ToString());

我收到错误说:

  

无法将类型'string'隐式转换为'int'

现在GetKey函数是字符串的类型:

public string GetKey(string key)
{
}

我该怎么办?

7 个答案:

答案 0 :(得分:5)

问题是“j”是一个int,你将它分配给GetKey的返回。将“j”设为字符串,或将GetKey的返回类型更改为int。

答案 1 :(得分:3)

试试这个:

j = Int32.Parse(GetKey((keys + i).ToString()));

如果值不是有效整数,它将抛出异常。

另一种选择是TryParse,如果转换不成功则返回一个布尔值:

j = 0;

Int32.TryParse(GetKey((keys + i).ToString()), out j);
// this returns false when the value is not a valid integer.

答案 2 :(得分:2)

getkey的结果类型是string zh_cn j变量声明为int

解决方案是:

j = Convert.ToInt32(GetKey((keys + i).ToString()));

我希望这是解决问题的方法。

答案 3 :(得分:1)

您收到错误,因为GetKey返回一个字符串,并且您尝试将返回对象分配给声明为int的j。你需要像alfonso建议的那样做,并将返回值转换为int。您也可以使用:

j = Convert.ToInt32(GetKey((keys+i).ToString()));

答案 4 :(得分:1)

尝试改进您的代码,看看这个:

public List<int> GetListIntKey(int keys)
{
    var t = new List<int>();

    for (int i = 0; ; i++)
    {
        var j = GetKey((keys + i).ToString());
        int n;
        // check if it's possible to convert a number, because j is a string.
        if (int.TryParse(j, out n))
            // if it works, add on the list
            t.Add(n);
        else //otherwise it is not a number, null, empty, etc...
            break;
    }
    return t.Count == 0 ? null : t;
}

希望对你有帮助! :)

答案 5 :(得分:-1)

What should i do ?

你错了。阅读有关值类型和引用类型的信息。

<强>错误:

  1. 错误为Cannot implicitly convert type 'string' to 'int'。隐含地意味着它获得了一个不能转换为int的字符串。 GetKeys返回您要分配给整数j的字符串。

  2. 你的j是整数。如何用null检查它。何时值类型为null?

  3. 使用此

    public List<int> GetListIntKey(int keys)
    {
        int j = 0;
        List<int> t = new List<int>();
        for (int i = 0; ; i++)
        {
            string s = GetKey((keys + i).ToString());
    
            if (Int.TryParse(s, out j))
                break;
            else
                t.Add(j);
        }
    
        if (t.Count == 0)
            return null;
        else
            return t;
    }
    

答案 6 :(得分:-1)

您必须使用exppicit类型转换。

使用

int i = Convert.ToInt32(aString);

转换。