double[] vTessTriangles = (double[])swFace.GetTessTriangles(true);
double VTTx2 = vTessTriangles[2];
なぜ私はこれを手に入れるのかInvalidCastExpection
タイプ'System.Single[]'のオブジェクトをタイプ'System.Double[]'にキャストできません。
double[] vTessTriangles = (double[])swFace.GetTessTriangles(true);
double VTTx2 = vTessTriangles[2];
なぜ私はこれを手に入れるのかInvalidCastExpection
タイプ'System.Single[]'のオブジェクトをタイプ'System.Double[]'にキャストできません。
まあ、キャストできないのでsingle[]
-double[]
これはうまくいくはずです:
float[] vTessTriangles = (float[])swFace.GetTessTriangles(true);
double VTTx2 = vTessTriangles[2];
single[]
aを a にキャストできないため、これが得られますdouble[]
。可能であれば、その結果double[]
はすべての要素が double であるべきだと考えます。要素をフェッチする場合は問題ありません。要素は実際には float ですが、暗黙的に double に変換できます。問題は設定要素にあります。要素を設定するとき、実際の配列は float または float のサブタイプのみを受け入れることができますが、それを a にキャストするとdouble[]
、double を設定できると考えられます。double
を暗黙的に に変換することはできないためfloat
、無効な操作になります。
single[]
aを aに保存するにdouble[]
は、配列全体をキャストするだけでなく、新しい構造を作成してすべての要素をコピーする必要があります。これは自分で行うこともできますが、LINQ を使用すると少し短縮できます。
double[] vTessTriangles = swFace.GetTessTriangles(true).Cast<double>().ToArray();