どのくらいの頻度では、あなたのクラスのための暗黙的な変換を作成するのですか?
-
24-09-2019 - |
質問
私は4年間の.NETアプリケーションを開発してきました。これまでのところ、私は私が執筆したクラスの任意の暗黙的な変換を作成する必要はありませんでした。
あなたが暗黙の変換を作成することなく行うことができなかったときには、現実の状況を提供してもらえますか?
ありがとうございます。
解決
暗黙的な変換のみ定義されるべきです。別の基準は、あなたのクラスを使用して、開発者は、おそらく暗黙的な変換が起こっているときに注意されませんので、暗黙的な変換は、かなり安価でなければならないことです。
一例:座標系間の変換。デカルト座標に変換することができる極座標ベクターは、例えば、便利かもしれません。しかし、オフ浮動小数点のラウンドのためには、まだプログラマは、変換を強制的に型キャストしなければならないように、明示的な変換としてこれを残す方が良いでしょう。
あなたが同じ形式で2つのデータ型そのストアデータを持っている場合は、暗黙的な変換を保証することができるが、種類の唯一の違いは、意味ある - それらがどのように使用されるか、または、彼らが何を意味しますか。現実世界の例:同じ(または互換)基礎となる表現を持っていますが、EPOCの開始日が異なるだけで日時データ型間の変換。日時タイプを定義しても意味が少し異なります両方の新しい枠組みに古いコードベースを移行するときは、これらを見つけることができます。ここでの暗黙的な変換は、おそらく大丈夫ですし、良いアイデア(全くデータの損失がないと仮定した場合)。
あなたがタイプのセットを持っていて、種類が互いの間で変換することができますどのようにするために独自のルールを定義している場合、は、それらの変換のいくつかは、暗黙の変換の「重症度」に応じて、いくつかの明示的かもしれません。 .NETでクラスを実装するとき、私は暗黙の型変換使用していた場所のプライマリ・インスタンスは、私はDelphiのランタイムライブラリのためのWin32バリアントセマンティクスを実装したときでした。 Win32とDelphi言語は、暗黙的にを行うことができVariantデータに変換数を指定します。
あなたが暗黙の変換を作成する必要性を発見していないことは、実際には良いことです。ちょうどあなたが、あなたがしなければならないという意味ではありません。なぜなら。暗黙的な変換は、様々なプログラミング言語が他の.NET言語によって相互運用性と理解可能でなければならないように、独自の意味を表すことができるように主に.NETに存在します。