C# での COM 型の検出
C# コンパイラが COM 型を処理する方法は非常に独特です。注目すべき例は、次の例に示すように、インターフェイスをインスタンス化する機能です。
<code class="language-csharp">Word.Application app = new Word.Application();</code>
C# 4 のもう 1 つのユニークな動作は、非参照パラメータを参照パラメータに渡す機能です。コンパイラは、実際の値に影響を与えることなく、参照によってパラメータを渡すためのローカル変数を自動的に追加します。
コンパイラーがこれらの変換をどのように実行するかを理解するために、カスタム例を作成できます。
<code class="language-csharp">[ComImport, GuidAttribute("00012345-0000-0000-0000-000000000011")] public interface Dummy { void Foo(ref int x); } class Test { static void Main() { Dummy dummy = null; dummy.Foo(10); } }</code>
ただし、インターフェースのインスタンス化を試してみたいとします。
<code class="language-csharp">Dummy dummy = new Dummy();</code>
<code class="language-csharp">[System.Runtime.InteropServices.CoClass(typeof(Test))] public interface Dummy { }</code>
以上がC# コンパイラは COM 型のインスタンス化と Ref パラメータの受け渡しをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。