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
Libérer: 2024-12-27 06:41:09
original
961 Les gens l'ont consulté

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")]
Copier après la connexion

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; }
}
Copier après la connexion

Tester.cs

using ClassAAssembly;

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

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal