ダウンキャストとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ダウンキャストの意味・解説 

ダウンキャスト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/10 00:54 UTC 版)

Go (プログラミング言語)」の記事における「ダウンキャスト」の解説

Goはインターフェース型の値から、基底型の値(インターフェース型変換される前の型の値)を動的に安全に得るダウンキャストの仕組みとして「型アサーション」と呼ばれる機能備えている。 // Value の返値はどんな型でも構わないvar i interface{} = Value()/* i の基底型を string仮定し実際にそうであれば s には変換結果が、 ok には trueセットされそうでなければ s にはstring型の初期値ゼロ値)が、 ok には falseセットされる。 以下の様に2つ目の返値を無視すると、i の基底型が stringなければ暗黙的にランタイムパニックとなる s := i.(string)*/if s, ok := i.(string); ok { fmt.Println ("文字列: ", s)} else { var kind string // 型switch switch i.(type) { case int: kind = "数値" default: kind = "その他" } fmt.Printf ("%s: %v\n", kind, i)} 標準パッケージreflectを使うことで、対象値型やその値などの詳細を得ることができる。

※この「ダウンキャスト」の解説は、「Go (プログラミング言語)」の解説の一部です。
「ダウンキャスト」を含む「Go (プログラミング言語)」の記事については、「Go (プログラミング言語)」の概要を参照ください。


ダウンキャスト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/06/07 23:27 UTC 版)

型変換」の記事における「ダウンキャスト」の解説

ダウンキャストはアップキャストの逆で、基底クラスから派生クラスへの型変換、すなわちBaseインスタンスをDerivedに変換する操作である。Baseインスタンスは必ずしもDerivedのインスタンスとは限らないので、この変換一般に安全ではなくエラー発生する可能性がある。そのため、多く言語ではキャスト構文による明示的な変換記述が必要である。通例オブジェクト指向プログラミングではポリモーフィズムを使うべきであり、ダウンキャストおよびクロスキャスト必要になるということはプログラムの設計問題があることを示唆している。 C++では、安全なダウンキャストのためにdynamic_castという特別な構文用意されている。この構文では、実行時型情報参照しポインタ間の変換失敗する結果としてnullptrが返る。参照間の変換失敗するstd::bad_cast例外スローされる。dynamic_cast使用するためには、型に仮想関数テーブルが必要となる。つまり、基底クラス少なくとも1つ仮想関数を持つ必要がある確実に成功することが分かっているダウンキャストの場合static_cast代用でき、これはdynamic_castよりも実行時コスト小さくなるが、失敗する可能性のある場合には使えない単一継承場合はダウンキャストにC言語形式キャスト構文を使うこともできるが、多重継承場合はダウンキャストにdynamic_castまたはstatic_castを使う必要があり、またどの基底クラスへのポインタキャストするかによって結果アドレス変化しうる。 Javaでは、ダウンキャストに失敗するとjava.lang.ClassCastException例外スローされる。C++dynamic_cast相当する機能存在しないが、instanceof演算子型情報問い合わせることはできる。 C#では、ダウンキャストに失敗するとSystem.InvalidCastException例外スローされる。また、as演算子用意されており、変換失敗した場合nullが返る。またC# 7.0では、is演算子拡張され変換可能性bool型返す同時に末尾宣言した変数変換結果格納される。as演算子is演算子共に、通常のキャスト演算子とは異なりユーザー定義変換行われない

※この「ダウンキャスト」の解説は、「型変換」の解説の一部です。
「ダウンキャスト」を含む「型変換」の記事については、「型変換」の概要を参照ください。

ウィキペディア小見出し辞書の「ダウンキャスト」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ダウンキャスト」の関連用語

ダウンキャストのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ダウンキャストのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのGo (プログラミング言語) (改訂履歴)、型変換 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS