ホームページ > バックエンド開発 > C++ > C# は、プライベート メンバーへのアクセスを制御するための C の 'friend' キーワードの機能をどのように実現しますか?

C# は、プライベート メンバーへのアクセスを制御するための C の 'friend' キーワードの機能をどのように実現しますか?

Barbara Streisand
リリース: 2024-12-27 06:41:09
オリジナル
900 人が閲覧しました

How Does C# Achieve the Functionality of C  's

C のフレンドと C# の不在

C では、「friend」キーワードにより、クラスのプライベート メンバーへのアクセスが外部に許可されます。クラス。これにより、カプセル化を損なうことなく、個人情報の制御された共有が可能になります。ただし、この概念は C# では直接実装されていません。

ギャップのブリッジ: InternalsVisibleTo

C# では、"friend" に最も近いものとして InternalsVisibleTo という属性が提供されています。これにより、アセンブリが別のアセンブリの内部メンバー (プライベート メンバーを含む) にアクセスできるようになります。これにより、制限された形式のアクセス制御が提供されます。

次のシナリオを考えてみましょう:

  • プライベート メンバーを持つ ClassA という名前のクラスがあります。
  • テスト クラスが必要です。 、テスター、これらのプライベート メンバーにアクセスします。

これを実現するには、次の属性をClassA の AssemblyInfo.cs ファイル:

[assembly: InternalsVisibleTo("TesterAssembly")]
ログイン後にコピー

「TesterAssembly」を Tester クラスを含むアセンブリの名前に置き換えます。これにより、TesterAssembly に ClassA の内部メンバーへのアクセス権が付与されます。

使用例

これがどのように機能するかを説明するために、次の簡単なコードを示します。例:

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;
    }
}
ログイン後にコピー

InternalsVisibleTo 属性を適用すると、内部メンバー (プライベート メンバーも含む) のアクセシビリティをアセンブリ レベルで制御できるため、マネージド コードのテストが可能になります。機密データを外部消費者に公開する。

以上がC# は、プライベート メンバーへのアクセスを制御するための C の 'friend' キーワードの機能をどのように実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート