2

タイトルの使い方がわかりませんでしたが、リスト内のオブジェクトをキャストしようとすると、そのエラーが発生します。

これは私が試すものです:

(type)objectList[i] = typeValue;

私はこれがうまくいくことを期待していますが、そうではありません。それを書き直すのに助けを得ることができますか?

4

3 に答える 3

2

C#の=符号は代入演算子です。等号の右側の値を左側の変数に代入します。

あなたの発言は逆です

このような値に割り当てる ことができますobjectList[i]typeValue

objectList[i] = typeValue;

objectList型の配列であり、typeすでにtypeValue型の変数である場合type、キャストは必要ありません。

typeValueタイプでない場合はtype、このようにキャストできます

(type)typeValue

うまくいけば、それは状況を明確にします

于 2012-06-13T02:29:33.100 に答える
1

あなたが何を意味するのか完全にはわかりませんが、objectListが の配列である場合typeof(object)、キャストは必要ありません。をキャストしてtypeValue割り当てようとしている場合は、次を使用します。

objectList[i] = (type)typeValue;
于 2012-06-13T02:17:02.490 に答える
0

オブジェクトを別の型にキャストすると、戻り値は定数になります。代入を受け入れるには、値が変数でなければなりません。

つまり、キャストして代入する正しい方法は次のようになります。

FooInstance = (Foo)BarInstance; // this is a correct cast

上記のコードは、キャストから Foo 型の定数値を作成し、その値を変数である FooInstance に割り当てます。

(Bar)FooInstance = BarInstance; // this will cause a compiler error

このコードは、実行が許可されている場合、BarInstance の値を、キャストによって作成された Bar 型の定数値に割り当てようとします。定数に代入できないため、これはエラーです。

FooInstance = FooInstance2; // this works - no cast necessary
FooInstance = (Foo)FooInstance2; // this cast is unnecessary, but won't cause an error
(Foo)FooInstance = FooInstance2; // this will cause a compiler error

同じ型ですが、(Foo)FooInstance は定数であるため、FooInstance2 の値を受け入れることはできません。一方、FooInstance は変数であるため、Foo 型の任意の値を受け入れることができます。

于 2012-06-13T02:51:07.173 に答える