Maison >développement back-end >C++ >Comment C# réalise-t-il la fonctionnalité du mot clé « ami » de C pour un accès contrôlé aux membres privés ?

Comment C# réalise-t-il la fonctionnalité du mot clé « ami » de C pour un accès contrôlé aux membres privés ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 06:41:09947parcourir

How Does C# Achieve the Functionality of C  's

Ami en C et son absence en C#

En C, le mot clé "friend" donne accès aux membres privés d'une classe à des cours. Cela permet un partage contrôlé d’informations privées sans compromettre l’encapsulation. Cependant, ce concept n'est pas directement implémenté en C#.

Bridging the Gap : InternalsVisibleTo

C# propose un attribut appelé InternalsVisibleTo comme l'approximation la plus proche de « ami ». Il permet à une assemblée d’accéder aux membres internes (y compris les membres privés) d’une autre assemblée. Cela fournit une forme limitée d'accès contrôlé.

Considérez le scénario suivant :

  • Vous avez une classe nommée ClassA avec des membres privés.
  • Vous souhaitez une classe de test , Testeur, pour accéder à ces membres privés.

Pour y parvenir, vous placeriez l'attribut suivant dans le fichier AssemblyInfo.cs de ClassA :

[assembly: InternalsVisibleTo("TesterAssembly")]

Remplacez "TesterAssembly" par le nom de l'assembly contenant la classe Tester. Ce faisant, vous accordez à TesterAssembly l'accès aux membres internes de ClassA.

Exemple d'utilisation

Pour illustrer comment cela fonctionne, voici un simple exemple :

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;
    }
}

En appliquant l'attribut InternalsVisibleTo, vous pouvez contrôler l'accessibilité des membres internes (même les membres privés) au niveau de l'assembly, permettant ainsi de tester le code managé sans exposer les données sensibles à des utilisateurs externes. consommateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn