問題タブ [cil-metadata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# コンパイラはジェネリックをどのように処理しますか?
C++ では、template
宣言は (テンプレートの型を明示的に宣言しない限り) ヘッダー ファイルで行う必要があり、その理由は理解できます。
私が得られないのは、.cs
調べるファイルがない場合に C# コンパイラがジェネリックをどのように処理できるかということです。CIL はプロセッサを集中的に使用する操作になるので、CIL を調べるとは思えません。メタデータから型情報を抽出できることは知っていますが、汎用関数のコードもエンコードされていると、実行可能ファイルが膨大な量になります。
繰り返しになりますが、コンパイラはジェネリックをどのように処理するのでしょうか?
c# - ジェネリックで演算子のオーバーロードを要求できないのはなぜですか
C++ では、次のようなコードを記述できます。
ただし、C# では次のようなことはできません。
何か理由はありますか?リフレクションによって実現できることはわかっていますが (Add
オブジェクトをジェネリックにしてから、すべてに対して型チェックを実行します)、それは非効率的であり、うまくスケーリングできません。では、なぜですか?