如何在数组中设置浮动索引的值

时间:2016-11-06 05:50:01

标签: c# arrays indexing

我无法将值设置为在C#中像arr[4.2]=11;这样的数组中浮动索引。我也使用了索引器。

double[] arr=new double[10];

public double this[double index]
{    
     get
     {
         if (index > 0 && index <=10)  
         {    
             return arr[index]; //here is error 
         }
         else 
         { 
             return 0;
         }
     }  
     set
     {
         if (index > 0 && index <=10) 
         {   
             arr[index] = value;    //here is error
         }
         else 
         { 
             Console.WriteLine("can not set value"); 
         }
     }
}

出现错误

  

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

on arr[index]

如何设置arr[1.5]=10; arr[2.4]=20; arr[0.2]=30;

等索引的值

3 个答案:

答案 0 :(得分:0)

您无法通过非整数索引到数组中。你最好使用字典。

Floats通常会制作糟糕的索引,因为它不仅可能,而且对于两个看似相似的花车而言确实很常见。

例如,在大多数环境中(1/3和1-(2/3)将给出两个不同的结果。

答案 1 :(得分:0)

您可以使用Dictionary<double, int>

var data = new Dictionary<double, int>();
data[1.5] = 10;
data[2.4] = 20;
data[0.2] = 30;

请注意浮点比较问题。如果您想克服这个问题,可以使用decimal

答案 2 :(得分:0)

根本不能将索引作为非整数。想象一下,如果我说你从数组中给我1.57个元素。它没有任何意义。如果要将索引设置为十进制或浮点数,则可以使用其他数据类型(如Dictionary或HashTable),但在比较键时要注意精度。