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?

È stato utile?

Soluzione

  1. 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.

  2. Puoi utilizzare InternalsVisibleToAttribute classe definita in System.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.

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