私は最近、C# でキャスト演算子を発見しました。これで、演算子をオーバーライドして次のいずれかを許可できることがわかりました。
byte b1 = new Foo();
byte b2 = (byte) new Foo();
しかし、消費者の観点Foo
からすると、変換が可能であることをどちらが理解しやすいかわかりません。私は特に、将来私のコードを維持する必要がある/する必要があるジュニアプログラマーについて考えています(または、数日前にこれを見ていたらどう思っただろうか)。
一方では、暗黙のキャストは少し奇妙に見えます。互換性のない異なるタイプを割り当てているようです。そして、IDE のインテリセンスは、コンパイラが文句を言わずにそれを実行できるメソッドがあることを教えてくれません。
一方、明示的なキャストは変換を強制するように見えます。わかりました、これはコンパイラに「自分が何をしているのか知っています。不平を言わないでください」と伝える方法です。しかし、 のコードにアクセスできないFoo
(またはキャスト演算子が C# に存在することを知らない) プログラマーは、キャストを実行して期待どおりのことを行うことができるでしょうか?
どのタイプのキャスティングがどの状況で好まれますか? 第三の方法はありますか?