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 に答える