2

我收到此错误“无法将'Data'类型的对象转换为'System.IConvertible'类型。” 在我的代码中

foreach (Data p in clusters[i])
 {
   for(int z=0; z<53;z++)
    {
      if (values[z] = Convert.ToInt32(p))
      {
         lray[z].BackColor = colorSet[i];
      }
    }
  }

“values”是一个整数数组,p 来自 Data 类

class Data
    {

        public int X, ClusterId;
        public Data(int x)
        {
            this.X = x;
        }
        public override string ToString()
        {
            return String.Format("({0})", X);
        }
        public static int DistanceSquared(Data p1, Data p2)
        {
            int diffX = p2.X - p1.X;
            return diffX * diffX;
        }
    }
4

3 回答 3

2

您的代码并不清楚您的意图。

p在一个对象中Data。似乎您想访问您保存在 p 的成员 X 中的数据

但你可以这样做

foreach (Data p in clusters[i])
 {
   for(int z=0; z<53;z++)
    {
      if (values[z] == p.X)
      {
         lray[z].BackColor = colorSet[i];
      }
    }
  }
于 2012-10-09T04:52:38.747 回答
2

只是错误所说的。您必须在 Data 类中实现 IConvertible 才能像这样使用它。

IConvertible 接口

于 2012-10-09T04:54:16.950 回答
2

YoueData类显然没有实现System.IConvertible。因此,您可以这样做,也可以在 if 中执行其他一些检查。

class Data : System.IConvertible
{// implement necessary methods of System.IConvertible here 
}

旁注:=是作业,您可能的意思是if (values[z] == ...)

于 2012-10-09T04:55:13.597 回答