无法将“数据”类型的对象强制转换为“System.IConvertible”类型

时间:2012-10-09 04:49:36

标签: c# asp.net

我收到此错误“无法将'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

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;
        }
    }

3 个答案:

答案 0 :(得分:3)

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

IConvertible Interface

答案 1 :(得分: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];
      }
    }
  }

答案 2 :(得分:2)

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

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

附注:=是作业,您可能需要if (values[z] == ...)