En C#, quelle est la difference entre public, private, protected, et l'absence de modificateur d'acces ?

En C#, quelle est la difference entre public, private, protected, et l’absence de modificateur d’acces ?

Modificateurs d’acces

Depuis learn.microsoft.com :

public

Le type ou le membre est accessible par tout autre code dans le meme assembly ou un autre assembly qui le reference.

private

Le type ou le membre n’est accessible que par le code dans la meme classe ou structure.

protected

Le type ou le membre n’est accessible que par le code dans la meme classe ou structure, ou dans une classe derivee.

private protected (ajoute en C# 7.2)

Le type ou le membre n’est accessible que par le code dans la meme classe ou structure, ou dans une classe derivee du meme assembly, mais pas depuis un autre assembly.

internal

Le type ou le membre est accessible par tout code dans le meme assembly, mais pas depuis un autre assembly.

protected internal

Le type ou le membre est accessible par tout code dans le meme assembly, ou par toute classe derivee dans un autre assembly.

Lorsqu’aucun modificateur d’acces n’est defini, un modificateur d’acces par defaut est utilise. Il y a donc toujours une forme de modificateur d’acces meme s’il n’est pas defini.

Modificateur static

Le modificateur static sur une classe signifie que la classe ne peut pas etre instanciee, et que tous ses membres sont statiques. Un membre statique possede une seule version quel que soit le nombre d’instances de son type englobant qui sont creees.

Une classe statique est fondamentalement la meme chose qu’une

(Reponse tronquee)