ProgrammingVB.NET 中級/リード 開発者

Friendアクセス修飾子がVisual Basicでどのように機能するかを説明し、その使用例を挙げ、Friendが他の修飾子よりも好ましい状況を示してください。

Hintsage AIアシスタントで面接を突破

回答。

Visual BasicのFriendアクセス修飾子は、クラスのメンバー(メソッド、プロパティ、変数)が同じアセンブリ内でアクセス可能であるが、アセンブリの外ではアクセスできないことを定義します。C#のinternalに相当します。このアクセスレベルは、公開APIをオープンにしながら、コードの内部実装の「隠蔽」を保証するために役立ちます。

使用例:

' 同じプロジェクト/アセンブリ内 Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class

InternalHelperクラスのメソッドは、現在のアセンブリ内でのみ呼び出すことができます。

Friendを使用する場合:

  • アプリケーションの他の部分にはアクセスできるが、外部モジュール/ライブラリにはアクセスできないクラス/メソッドのため。
  • アクセスパターンの実装(例:内部コンポーネントのテストなど)のため。

トリッキーな質問。

Friendアクセス修飾子とProtectedの違いは何ですか?Friendとして宣言されたメソッドは、別のアセンブリ内の継承されたクラスに表示されますか?

回答:

  • Friend — 自分のアセンブリ内でのみアクセス可能(継承に関係なく)。
  • Protected — 継承されたクラス内でのみアクセス可能(アセンブリに関係なく)。
  • Friendレベルのメソッドは、現在のアセンブリの外にある継承されたクラスからはアクセスできません。継承とアセンブリ内の両方でアクセスが必要な場合は、Protected Friendを使用します。
Protected Friend Sub MyMethod() ' アセンブリ内およびアセンブリ外の継承者にアクセス可能 End Sub

知識不足による実際のエラーの例。


ストーリー

大規模なプロジェクトでは、すべてのサポートクラスのロジックがPublicとして宣言されており、外部の統合者に開放されていました。Friendに変更することで、モジュール外での内部メソッドの使用リスクが排除され、アーキテクチャの保守が簡素化されました。


ストーリー

アクセスエラーのため(Friendの代わりにProtectedを使用した)、同じプロジェクト内でモジュールテスト用の補助メソッドにアクセスできませんでしたが、クラスの階層外に配置されていました。便利なテストをサポートするためにFriendに修正しました。


ストーリー

ある開発者が別のアセンブリから読み込まれたプラグインにメソッドを公開するためにFriendを使用しようとしました。その結果、プラグインは必要なメソッドにアクセスできませんでした。解決策は、Publicメソッドを持つインターフェイスを実装し、Friendは内部のニーズのためのみに使用することでした。