• 締切済み

C# 自作クラスのキャストについて

自作クラス 「XXXParam」と「XXXData」を作成しました。 「XXXParam」は「XXXData」を継承して作成しています。      XXXData WData; XXXParam WParam = (XXXParam)WData; という処理を実行したところ 「型 XXXData' のオブジェクトを型 'XXXParam' にキャストできません。」 というエラーメッセージが出力されます。 キャストの方法、私が間違えている所、解決策など教えていただけると 幸いです。 よろしくお願いいたします。

みんなの回答

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.2

もともとのキャスト対象のインスタンス(WData)は、XXXParam のインスタンスでしたか? つまり、 XXXData WData = new XXXParam (); されてますか? 単なる XXXData WData = new XXXData (); されたものをそういうキャストはできません。 キャスト方向が逆です。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>「XXXParam」は「XXXData」を継承して作成しています。 つまりXXXDataにはXXXParamは含まれていません。 だからキャストできないのです。 XXXParam WParam = new XXXParam(); XXXData WData = (XXXParam)WParam; なら可能です。 ちなみに XXXParam WParam = WData as XXXParam; とすれば例外は発生せず、キャストできない場合は WParamにnullが入ります。

関連するQ&A