ProgrammazioneSviluppatore VB.NET Middle/Lead

Spiega come funziona il modificatore di accesso Friend in Visual Basic, porta un esempio del suo utilizzo e indica le situazioni in cui Friend è preferibile ad altri modificatori.

Supera i colloqui con l'assistente IA Hintsage

Risposta.

Il modificatore Friend in Visual Basic definisce che un membro di classe (metodo, proprietà, variabile) è accessibile all'interno di un assembly ma non al di fuori di esso. Questo è analogo a internal in C#. Questo livello di accesso è utile per garantire la "nascondibilità" dell'implementazione interna del codice mantenendo aperti gli API pubblici.

Esempio di utilizzo:

' All'interno di un progetto/assembly Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class

La chiamata ai metodi della classe InternalHelper sarà possibile solo all'interno dell'assembly corrente.

Quando utilizzare Friend:

  • Per classi/metodi che devono essere accessibili ad altre parti dell'applicazione, ma non a moduli/biblioteche esterne.
  • Per implementare schemi di accesso (ad esempio, testare componenti interni).

Domanda trabocchetto.

Qual è la differenza tra il modificatore di accesso Friend e Protected? Un metodo dichiarato come Friend può essere visibile in una classe ereditata in un'altra assembly?

Risposta:

  • Friend — accessibile solo all'interno del proprio assembly (indipendentemente dall'ereditarietà).
  • Protected — accessibile solo nelle classi ereditate (indipendentemente dall'assembly).
  • Un metodo con livello Friend non sarà accessibile per le classi ereditate che si trovano al di fuori dell'assembly attuale. Se è necessaria l'accessibilità sia nell'ereditarietà che all'interno dell'assembly — utilizzare Protected Friend.
Protected Friend Sub MyMethod() ' Accessibile all'interno dell'assembly e per gli eredi al di fuori dell'assembly End Sub

Esempi di errori reali a causa della mancanza di conoscenza delle sottigliezze dell'argomento.


Storia

In un grande progetto, tutta la logica delle classi di supporto era dichiarata come Public, il che la rendeva aperta agli integratori esterni. La conversione a Friend ha eliminato il rischio di utilizzo di metodi interni al di fuori del modulo e ha semplificato la manutenzione dell'architettura.


Storia

A causa di un errore di accesso (è stato usato Protected al posto di Friend), i metodi ausiliari non erano accessibili per i test modulari, che erano collocati nello stesso progetto, ma al di fuori della gerarchia di classi. È stato corretto in Friend per supportare test più agevoli.


Storia

One developer tried to use Friend to expose methods to a plug-in loaded from another assembly. As a result, the plug-ins did not have access to the necessary methods. The solution was to implement interfaces with Public methods, using Friend only for internal needs.