Qual è l'equivalente di una parola chiave "amico" in C Sharp?
-
22-07-2019 - |
Domanda
Qual è l'equivalente di una parola chiave "amico" in C Sharp?
Come si usa la parola chiave "interna"?
Ho letto che la parola chiave "interna" sostituisce "amico" in C #.
Sto usando una DLL nel mio progetto C # per cui ho il codice sorgente e tuttavia non voglio modificare il codice esistente. Ho ereditato la classe e posso usare la mia classe ereditata come voglio. Il problema è che la maggior parte del codice nella classe genitore ha metodi protetti. L'uso di un amico consentirà in qualche modo di accedere o chiamare questi metodi protetti?
Soluzione
-
Puoi utilizzare il modificatore di accesso alle parole chiave
internal
per dichiarare un tipo o un membro del tipo come accessibile al codice solo nello stesso assembly. -
Puoi utilizzare
InternalsVisibleToAttribute
classe definita inSystem.Rutime.CompilerServices
per dichiarare un tipo accessibile solo al codice nello stesso assembly o in un assembly specificato.
Utilizzi il primo come usi qualsiasi altro modificatore di accesso tale come privato
. In parole povere:
internal class MyClass {
...
}
Si utilizza il secondo come segue:
[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")]
internal class MyVisibleClass {
...
}
Entrambi possono essere giustamente considerati l'equivalente di amico
in C #.
I metodi protetti
sono già disponibile per le classi derivate.
Altri suggerimenti
No, "interno" non è uguale a " amico " (almeno l'amico "C ++")
amico specifica che questa classe è accessibile solo da ONE, classe particolare.
internal specifica che questa classe è accessibile da QUALSIASI classe nell'assembly.
1) Interno è l'equivalente in C # della parola chiave "amico" di VB.NET, come hai intuito (al contrario di una sostituzione)
2) L'utilizzo è il seguente
internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }
3) Fondamentalmente si tratta di un modificatore di accesso che stabilisce che l'accessibilità della classe / funzione / vendibile / proprietà contrassegnata come interna è come se fosse pubblica per l'Assemblea in cui è compilata e privata per qualsiasi altra assemblea
La tua sottoclasse sarà in grado di accedere ai membri protetti della classe che erediti.
Stai cercando di dare accesso a questi membri protetti a un'altra classe?
Interno è l'equivalente di amico. Un metodo protetto è disponibile solo all'interno della stessa classe o da un erede. Se stai cercando di esporre metodi protetti da un erede, puoi avvolgerli in metodi pubblici.