Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C# Mencapai Fungsi Kata Kunci 'rakan' C untuk Capaian Terkawal kepada Ahli Persendirian?

Bagaimanakah C# Mencapai Fungsi Kata Kunci 'rakan' C untuk Capaian Terkawal kepada Ahli Persendirian?

Barbara Streisand
Barbara Streisandasal
2024-12-27 06:41:09947semak imbas

How Does C# Achieve the Functionality of C  's

Rakan dalam C dan Ketiadaannya dalam C#

Dalam C , kata kunci "rakan" memberikan akses kepada ahli persendirian kelas kepada luaran kelas. Ini membolehkan perkongsian maklumat peribadi terkawal tanpa menjejaskan pengkapsulan. Walau bagaimanapun, konsep ini tidak dilaksanakan secara langsung dalam C#.

Merapatkan Jurang: InternalsVisibleTo

C# menawarkan atribut yang dipanggil InternalsVisibleTo sebagai penghampiran paling hampir kepada "rakan." Ia membenarkan perhimpunan mengakses ahli dalaman (termasuk ahli persendirian) perhimpunan lain. Ini menyediakan bentuk akses terkawal yang terhad.

Pertimbangkan senario berikut:

  • Anda mempunyai kelas bernama ClassA dengan ahli persendirian.
  • Anda mahukan kelas ujian , Penguji, untuk mengakses ahli peribadi ini.

Untuk mencapai ini, anda akan meletakkan atribut berikut dalam Fail AssemblyInfo.cs ClassA:

[assembly: InternalsVisibleTo("TesterAssembly")]

Ganti "TesterAssembly" dengan nama perhimpunan yang mengandungi kelas Penguji. Dengan berbuat demikian, anda memberikan TesterAssembly akses kepada ahli dalaman ClassA.

Contoh Penggunaan

Untuk menggambarkan cara ini berfungsi, berikut ialah ringkas contoh:

ClassA.cs

public class ClassA
{
    private int _privateMember;

    public int PublicMember { get; set; }
}

Tester.cs

using ClassAAssembly;

public class Tester
{
    public void Test()
    {
        // Access private member through InternalsVisibleTo
        var instance = new ClassA();
        instance._privateMember = 10;
    }
}

Dengan menggunakan atribut InternalsVisibleTo, anda boleh mengawal kebolehaksesan ahli dalaman (walaupun ahli persendirian) pada peringkat perhimpunan, mendayakan ujian kod terurus tanpa mendedahkan data sensitif kepada pengguna luar.

Atas ialah kandungan terperinci Bagaimanakah C# Mencapai Fungsi Kata Kunci 'rakan' C untuk Capaian Terkawal kepada Ahli Persendirian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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