Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Pengkompil C# Mengendalikan Instantiasi Jenis COM dan Lulus Parameter Rujukan?

Bagaimanakah Pengkompil C# Mengendalikan Instantiasi Jenis COM dan Lulus Parameter Rujukan?

Susan Sarandon
Lepaskan: 2025-01-10 17:32:48
asal
298 orang telah melayarinya

How Does the C# Compiler Handle COM Type Instantiation and Ref Parameter Passing?

Mengesan jenis COM dalam C#

Cara pengkompil C# mengendalikan jenis COM adalah sangat unik. Contoh yang ketara ialah keupayaan untuk membuat instantiate antara muka, seperti yang ditunjukkan dalam contoh berikut:

<code class="language-csharp">Word.Application app = new Word.Application();</code>
Salin selepas log masuk

Walaupun Aplikasi ialah antara muka, ia boleh dijadikan instantiated. Ini dicapai dengan menukar panggilan kepada Type.GetTypeFromCLSID() dan Activator.CreateInstance.

Satu lagi tingkah laku unik dalam C# 4 ialah keupayaan untuk menghantar parameter bukan ref kepada parameter rujukan. Pengkompil secara automatik menambah pembolehubah tempatan untuk lulus parameter dengan rujukan tanpa menjejaskan nilai sebenar.

Untuk memahami cara pengkompil melakukan transformasi ini, kami boleh mencipta contoh tersuai:

<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>
Salin selepas log masuk

Kod ini akan berjaya dilaksanakan dan menunjukkan cara untuk menghantar parameter ref mengikut nilai.

Walau bagaimanapun, katakan kami ingin mencuba membuat antara muka:

<code class="language-csharp">Dummy dummy = new Dummy();</code>
Salin selepas log masuk

Walaupun kod ini tidak akan berjaya dilaksanakan, ia menyerlahkan keperluan untuk menyiasat "sihir" pengkompil. Untuk benar-benar membuat antara muka kita boleh menggunakan atribut CoClass:

<code class="language-csharp">[System.Runtime.InteropServices.CoClass(typeof(Test))]
public interface Dummy { }</code>
Salin selepas log masuk

Atribut CoClass mengaitkan kelas pelaksanaan dengan antara muka, membolehkan ia dijadikan instantiated sebagai objek konkrit. Pendekatan ini biasanya digunakan apabila API COM memerlukan instantiating antara muka.

Atas ialah kandungan terperinci Bagaimanakah Pengkompil C# Mengendalikan Instantiasi Jenis COM dan Lulus Parameter Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan