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)
{
}
我该怎么办?
答案 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 ?
你错了。阅读有关值类型和引用类型的信息。
<强>错误:强>
错误为Cannot implicitly convert type 'string' to 'int'
。隐含地意味着它获得了一个不能转换为int的字符串。 GetKeys返回您要分配给整数j
的字符串。
你的j是整数。如何用null检查它。何时值类型为null?
使用此
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);
转换。