Les classes privées peuvent-elles exister en C #, autres que les classes internes?
Tout simplement NON. Rien sauf si c'est dans une classe imbriquée
Les classes et les structures qui ne sont pas imbriquées dans d'autres classes ou structures peuvent être soit publiques ou internes . Un type déclaré public est accessible par tout autre type. Un type déclaré comme interne n'est accessible que par des types au sein du même assembly. Les classes et les structures sont déclarées comme internes par défaut sauf si le mot-clé public est ajouté à la définition de classe.
Les définitions de classe ou de structure peuvent ajouter le mot-clé interne pour rendre leur niveau d'accès explicite. Les modificateurs d'accès n'affectent pas la classe ou la structure elle-même - elle a toujours accès à elle-même et à tous ses propres membres.
Les membres de structure, y compris les classes et les structures imbriquées, peuvent être déclarés publics, internes ou privés. Les membres de classe, y compris les classes et structures imbriquées, peuvent être publics, protégés internes, protégés, internes ou privés. Le niveau d'accès pour les membres de classe et les membres de structure, y compris les classes et structures imbriquées, est privé par défaut. Les types imbriqués privés ne sont pas accessibles depuis l'extérieur du type conteneur.
Les classes dérivées ne peuvent pas avoir une plus grande accessibilité que leurs types de base. En d'autres termes, vous ne pouvez pas avoir une classe publique B qui dérive d'une classe interne A. Si cela était autorisé, cela aurait pour effet de rendre A public, car tous les membres protégés ou internes de A sont accessibles à partir de la classe dérivée.
Non, il n'y en a pas. Vous ne pouvez pas avoir de classe privée à moins qu'elle ne soit imbriquée.
Dans quel autre scénario que pour une classe interne, aimeriez-vous avoir une classe "privée"?
Vous pouvez utiliser le modificateur internal
pour créer une classe qui n'est visible que dans l'assembly actuel.
// the class below is only visible inside the Assembly in where it was declared
internal class MyClass
{
}
Quelle serait la portée d'une telle classe?
Nous pouvons déclarer une classe comme privée dans une autre classe. veuillez trouver le code ci-dessous pour savoir comment procéder:
public class Class1
{
temp _temp ;
public Class1()
{
_temp = new temp();
}
public void SetTempClass(string p_str, int p_Int)
{
_temp.setVar(p_str, p_Int);
}
public string GetTempClassStr()
{
return _temp.GetStr();
}
public int GetTempClassInt()
{
return _temp.GetInt();
}
private class temp
{
string str;
int i;
public void setVar(string p_str, int p_int)
{
str = p_str;
i = p_int;
}
public string GetStr()
{
return str;
}
public int GetInt()
{
return i;
}
}
}