タイトルの使い方がわかりませんでしたが、リスト内のオブジェクトをキャストしようとすると、そのエラーが発生します。
これは私が試すものです:
(type)objectList[i] = typeValue;
私はこれがうまくいくことを期待していますが、そうではありません。それを書き直すのに助けを得ることができますか?
C#の=
符号は代入演算子です。等号の右側の値を左側の変数に代入します。
あなたの発言は逆です
このような値に割り当てる ことができますobjectList[i]
typeValue
objectList[i] = typeValue;
objectList
型の配列であり、type
すでにtypeValue
型の変数である場合type
、キャストは必要ありません。
typeValue
タイプでない場合はtype
、このようにキャストできます
(type)typeValue
うまくいけば、それは状況を明確にします
あなたが何を意味するのか完全にはわかりませんが、objectList
が の配列である場合typeof(object)
、キャストは必要ありません。をキャストしてtypeValue
割り当てようとしている場合は、次を使用します。
objectList[i] = (type)typeValue;
オブジェクトを別の型にキャストすると、戻り値は定数になります。代入を受け入れるには、値が変数でなければなりません。
つまり、キャストして代入する正しい方法は次のようになります。
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 型の任意の値を受け入れることができます。