无法从double转换为int,我的程序试图从它的列表中减去并将结果添加到新列表中,但由于某种原因我得到了这个错误:
List<double> test = new List<double>();
List<double> theOneList = new List<double>();
theOneList = wqList.Concat(rList).Concat(eList).ToList();
theOneList.Add(0);
theOneList.OrderByDescending(z => z).ToList();
for (double i = 0; i < 5; i++)
{
test.Add(theOneList[i + 2.0] - theOneList[i + 3.0]);
Console.WriteLine(test[i]);
}
总结:当我打印出列表而不是双倍的时候,由于&#39; int&#39;声明
答案 0 :(得分:5)
列表索引器的类型应为int
,但您在循环中将其声明为double
:
for (double i = 0; i < 5; i++)
将i
类型更改为int
,而不使用i + 2.0
,i + 2
等等。
答案 1 :(得分:1)
您无法使用双数索引数组。你需要使用int来做到这一点:
for (int i = 0; i < 5; i++)
{
test.Add(theOneList[i + 2] - theOneList[i + 3]);
Console.WriteLine(test[i]);
}
答案 2 :(得分:0)
通常,索引器的声明如下所示:
public int this[int index] // Indexer declaration
{
// get and set accessors
}
如您所见,索引器声明为整数值。因此,有两种正确的方法可以使您的代码正常工作:
double
的{{1}}变量的数据类型更改为i
。这是最好的做法,只要我允许估算。在将int
用作索引之前,您将i
的值转换为int
,但我不建议这样做。
test.Add(theOneList[(int)i + 2] - theOneList[(int)i + 3]);
答案 3 :(得分:-1)
逻辑中存在多个错误;
List<double> test = new List<double>();
List<double> theOneList = wqList.Concat(rList).Concat(eList).ToList();
theOneList.Add(0);
theOneList = theOneList.OrderByDescending(z => z).ToList(); // you need to set the list after ordering; or the old list will not change
for (int i = 0; i < 5; i++) // change variables to integer, do you know that at least 8 values exists in theOneList?
{
test.Add(theOneList[i + 2] - theOneList[i + 3]);
Console.WriteLine(test[i]);
}