4

私は最近、C# でキャスト演算子を発見しました。これで、演算子をオーバーライドして次のいずれかを許可できることがわかりました。

byte b1 = new Foo();
byte b2 = (byte) new Foo();

しかし、消費者の観点Fooからすると、変換が可能であることをどちらが理解しやすいかわかりません。私は特に、将来私のコードを維持する必要がある/する必要があるジュニアプログラマーについて考えています(または、数日前にこれを見ていたらどう思っただろうか)。

一方では、暗黙のキャストは少し奇妙に見えます。互換性のない異なるタイプを割り当てているようです。そして、IDE のインテリセンスは、コンパイラが文句を言わずにそれを実行できるメソッドがあることを教えてくれません。

一方、明示的なキャストは変換を強制するように見えます。わかりました、これはコンパイラに「自分が何をしているのか知っています。不平を言わないでください」と伝える方法です。しかし、 のコードにアクセスできないFoo(またはキャスト演算子が C# に存在することを知らない) プログラマーは、キャストを実行して期待どおりのことを行うことができるでしょうか?

どのタイプのキャスティングがどの状況で好まれますか? 第三の方法はありますか?

4

2 に答える 2

1

あなたの場合、2番目の方が読みやすいと思います。両方の基になる操作は同じです。

次のように書くこともできます。

var b2 = (byte) new Foo();

読みやすさを考慮すれば、これが最善だと思います。

どのように?-

  1. 一度だけ使用してbyteいます。
  2. Foo「将来のプログラマー」に、キャストしていることと、そのタイプの b2byteを一度に使用していることを知らせています。(byte)
于 2013-10-17T08:45:05.993 に答える