首页 文章

无法转换'Data'类型的对象以键入'System.IConvertible'

提问于
浏览
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;
        }
    }

3 回答

  • 3

    您的意图不清楚您的代码 .

    pData 的对象中 . 似乎您想要访问您在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

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

    IConvertible Interface

  • 2

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

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

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

相关问题