私はC#のソースコード参照を探検しました。そして私はIArithmetic<T>
インターフェイスの興味深い言及と出会いました。たとえば、Int32
,Double
には、IArithmetic
インターフェイスのコメント付き実装が含まれています。私はこれらの細部に興味があります。私が理解しているように、それは算術演算の「サポート」を追加しようとしています。しかし、なぜ彼らはコメントされていますか?サポートする汎用の演算子を追加するのは悪い方法ですか?IArithmetic <T>インターフェイスはC#
答えて
パフォーマンス上の理由から、使い勝手の面でおそらく廃止されました。
インターフェイスを介した算術演算をサポートするプリミティブ型は、あまり魅力的ではありません。必要なボクシングとアンボクシングのために単に値タイプ自体を使用するのと比べて、パフォーマンスは恐ろしいものになります。
どうすればよいですか?さて、最初に覚えておいていただきたいのは次のシナリオです:
public Matrix<T> where T: IArithmetic<T>
などです。これは面白いかもしれませんが、パフォーマンス上の理由から、インターフェースを介さずに解決する必要があるかもしれません。被験者に非常に教育を受けた人のためにthisを読んでください。
さらに、Arithmetic<T>
のようなものが本当に必要な場合は、追加レベルの間接指定を使用して独自のものを構築できます。
あなたの例では、ボックスにする必要はありません。 – Lee
@Lee Thats本当ですか?この答えがなぜ受け入れられたのか分かりません。私が書いたことで私が全く確信していなかったので、私はそれを消去することを検討していました。 – InBetween
説明的なリンクが含まれているので、私は最初は答えとして受け入れました。 – LmTinyToon
- 1. Kerberos TGTの動作
- 2. インターフェイスからのアダプタ<Type>からインターフェイス<Subtype>
- 3. C++イテレータ、インターフェイス、ポインタ
- 4. インターフェイス、ジェネリック、c#
- 5. C# - Rインターフェイス
- 6. IronPythonのC#インターフェイス
- 7. インターフェイスのC#プロパティ
- 8. リスト<interface>を別のインターフェイス内に使用するC#
- 9. Matlabを入手する最良の方法<-> C++インターフェイス
- 10. ChannelFactory <T>インターフェイスなし
- 11. Swift <->リアクションネイティブブリッジ重複インターフェイス
- 12. インターフェイスIDLファイルをC#
- 13. c#DAL - ビジネスオブジェクトのインターフェイス
- 14. C#インターフェイスの制約
- 15. インターフェイスの実装C#
- 16. C#インターフェイスに変換
- 17. C#インターフェイスの質問
- 18. Javaインターフェイス<?>は、タイプスクリプトのインタフェース<any>と同等です
- 19. ジェネリックタイプのインターフェイスでクラスからインターフェイスに変換するインターフェイス<Interface>
- 20. JavaインターフェイスとObjective-Cプロトコルの違いは?
- 21. インターフェイスC++のメリット?このコードでは
- 22. C#Linqインターフェイスでの照会
- 23. C#:汎用インターフェイス番号:
- 24. C#ダイヤモンド継承(インターフェイス実装)
- 25. C#のジェネリックメソッドの型がインターフェイス
- 26. DLLへのC#インターフェイスとExecutionEngineException
- 27. Rationalドア9.6とC#のインターフェイス
- 28. C#インターフェイスとクラスの継承
- 29. Objective Cのインターフェイス、デリゲート、プロトコル
- 30. 内部セッターとのC#インターフェイス
OPには点があります。コメントは['IArithmetic <>']です(https://referencesource.microsoft.com/#mscorlib/system/int16.cs,4f2f28ae4cd2bc79) – StuartLC
これはもうcoreclr [source ](https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Int32.cs#L26) – DaveShaw
もしそれが悪いか良いか有用かを私たちに聞いているのであれば、ベース。なぜこれがかつて考慮されなかったのか、そして最終的には実装されていないのかについての権威ある答えを探しているのならば、それは[history-based](http://meta.stackoverflow.com/questions/276366/)です。どちらの場合でも、それは良いことではありません。 –