J'ai une classe .Net C# où je dois rendre une variable publique. J'ai besoin d'initialiser cette variable dans une méthode (pas dans le constructeur). Cependant, je ne veux pas que la variable soit modifiable par d'autres classes. Est-ce possible?
Réponses
Trop de publicités?N'utilisez pas de champ - utilisez une propriété :
class Foo
{
public string Bar { get; private set; }
}
Dans cet exemple, Foo.Bar
est lisible partout et accessible en écriture uniquement par les membres de Foo
lui-même.
En remarque, cet exemple utilise une fonctionnalité C# introduite dans la version 3 appelée propriétés automatiquement implémentées . Il s'agit d'un sucre syntaxique que le compilateur transformera en une propriété régulière dotée d'un champ de sauvegarde privé comme celui-ci :
class Foo
{
[CompilerGenerated]
private string <Bar>k__BackingField;
public string Bar
{
[CompilerGenerated]
get
{
return this.<Bar>k__BackingField;
}
[CompilerGenerated]
private set
{
this.<Bar>k__BackingField = value;
}
}
}
Vous devez utiliser une propriété pour cela. Si vous êtes d'accord avec une implémentation automatique de getter/setter, cela fonctionnera :
public string SomeProperty { get; private set; }
Notez que vous ne devez pas exposer les champs comme publics de toute façon, sauf dans certaines circonstances limitées. Utilisez plutôt une propriété.