7

私は4年間.NETアプリケーションを開発してきました。これまでのところ、作成したクラスの暗黙的な変換を作成する必要はありませんでした。
暗黙の変換を作成せずに実行できない実際の状況を提供できますか?

ありがとうございました

4

1 に答える 1

4

暗黙的な変換は、データを失うことなく、タイプを別のタイプの間で(できれば別のタイプとの間で)変換できる場合にのみ定義する必要があります。もう1つの基準は、暗黙の変換がいつ行われるかをクラスを使用する開発者がおそらく認識しないため、暗黙の変換はかなり安価である必要があるということです。

一例:座標系間の変換。たとえば、デカルト座標に変換できる極座標ベクトルが便利な場合があります。ただし、浮動小数点の四捨五入により、プログラマーが変換を強制するために型キャストする必要があるように、これを明示的な変換のままにしておくことをお勧めします。

同じ形式でデータを格納する2つのデータ型があるが、タイプ間の唯一の違いがセマンティック(使用方法または意味)である場合は、暗黙的な変換が保証される場合があります。実際の例:同じ(または互換性のある)基底表現を持つが、エポック開始日のみが異なる日時データ型間の変換。これらは、古いコードベースを新しいフレームワークに移行するときに見つかります。どちらも日時タイプを定義しますが、セマンティクスはわずかに異なります。ここでの暗黙的な変換(データの損失がまったくないと仮定)はおそらく問題なく、良い考えです。

タイプのセットがあり、タイプを相互に変換する方法について独自のルールを定義している場合、変換の「重大度」に応じて、これらの変換の一部は暗黙的であり、一部は明示的です。.NETでクラスを実装するときに暗黙的な変換を使用した主な例は、DelphiランタイムライブラリのWin32Variantセマンティクスを実装するときでした。Win32とDelphi言語は、暗黙的に実行できるVariantデータの変換の数を指定します。

暗黙の変換を作成する必要がないことは、実際には良いことです。できないからといって、そうすべきだとは限りません。暗黙の変換は、主に、他の.NET言語と相互運用可能で理解できる方法で、さまざまなプログラミング言語が独自のセマンティクスを表現できるようにするために.NETに存在します。

于 2010-04-06T06:43:43.340 に答える