Domanda

A questa domanda SO: Qual è il C # equivalente di amico , io personalmente ho risposto "interno", proprio come ha fatto Ja tra le risposte! Tuttavia, Jon Skeet dice che non c'è equivalenza diretta di VB Friend in C #. Se Jon Skeet dice così, non voglio essere quello dice il contrario! ; P

mi chiedo come può la parola interna (C # ) non essere l'equivalente di Friend (VBNET) quando le rispettive definizioni sono:

amico VBNET

  

Il Friend (Visual Basic) parola chiave nella istruzione di dichiarazione specifica che gli elementi sono accessibili dall'interno dello stesso complesso, ma non dall'esterno del complesso. [...]

interno C #

  

interno :. L'accesso è limitato al gruppo corrente

Per la mia comprensione, queste definizioni significano esattamente la stessa cosa per me.

Poi, rispettivamente, quando sto codifica in VB.NET, io uso il Amico parola chiave per specificare che una classe o di una proprietà sono accessibili solo all'interno del gruppo di cui è dichiarata. Lo stesso in C #, io uso il interno parola chiave per specificare lo stesso.

  1. Sto facendo qualcosa di sbagliato o qualcosa da questo punto di vista?

  2. Quali sono i parametri che non capisco?

  3. potrebbe qualcuno si prega di spiegare in che modo e in quale amico e interno non sono equivalenze dirette?

Grazie in anticipo per le tue risposte!

È stato utile?

Soluzione

L'ho già detto non c'è nessun equivalente diretto del C ++ concetto di "amico". Questo non è lo stesso del concetto di VB.NET Friend, che è davvero equivalente a internal in C #.

Il contesto è importante - non per scontato che gli stessi mezzi di parole esattamente la stessa cosa in tutte le lingue ... "statico" è un classico esempio:)

Altri suggerimenti

(originale) la risposta di Jon rende chiaro che sta facendo riferimento al C / C ++ friend parola chiave, che consente l'accesso privato ad un'altra classe. Non v'è alcun equivalente diretto in C #, ma c'è un modo per estendere internal ad un'altra assemblea, in gran parte per il test.

Per quanto mi risulta, VB.Net Friend è lo stesso di C # internal.

(ho scritto quanto sopra proprio come Jon aggiunto una risposta qui.)

Quando si confrontano i linguaggi .NET, friend di VB equivale a C # 's internal. Significato, nulla contrassegnati come tali è accessibile solo dall'interno dello stesso progetto / montaggio. Esso può essere combinato con protected per un maggiore controllo sulla visibilità.

L'attributo InternalsVisibleTo può essere utile per scopi di test; Nonostante il nome, si applica a VB tanto quanto lo fa per C #. Va notato che VB non supporta l'utilizzo di InternalsVisibleTo fino .NET 4.

C'è un equivalente approssimativa del amico parola chiave C ++ in codice gestito. Anche se si lavora a livello di assieme, non il livello di classe. È possibile utilizzare il [InternalsVisibleTo] attributo .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top