This article has been localized into French by the community.
Champs
Un champs est un des blocs de construction les plus élémentaires d'une classe. C'est similaire à une variable, dont nous avons parlé précédemment, mais définie au niveau de la classe plutôt qu'u niveau de la méthode. La différence est plutôt importante et concerne le concept de portée, qui décide d'où l'on peut accéder à une variable : une variable locale (définie à l'intérieur d'une méthode) est seulement accessible depuis l'intérieur de cette méthode, alors qu'un champs de classe est accessible depuis toutes les méthodes de cette classe, et même depuis des méthodes d'autres classes si sa visibilité l'autorise.
En d'autres termes, la différence entre une variable et un champs est l'endroit où la déclaration a été faite. Une variable au niveau de la classe est appelée un champs alors qu'une variable déclarée au niveau de la méthode est habituellement appelée simplement une variable.
Les champs sont souvent déclarés près du début de la classe, et leur visibilité est souvent réglée sur private (nous discuterons de la visibilité plus loin dans ce chapitre). Voici à quoi cela pourrait ressembler :
public class FieldsSample
{
private string name;
....
Nous avons maintenant une variable de niveau classe appelée "nom", à laquelle on peut accéder depuis toutes les méthodes de cette classe. Elle n'est pas accessible depuis l'extérieur de la classe, mais seulement parce que nous l'avons marquée comme private. Vous êtes libre de déclarer vos champs comme protected si vous voulez y accéder depuis des classes dérivées ou même public si vous voulez y accéder depuis n'importe où, mais gardez à l'esprit que la manière recommandée d'accéder aux champs depuis l'extérieur d'une classe est à travers les propriétés, que nous aborderons dans le prochain article.
Dans notre exemple ci-dessus, notre variable "name" n'a pas de valeur initiale, ce qui signifie que vous devrez lui assigner quelque chose avant de pouvoir l'utiliser. Si vous savez déjà quelle devrait être la valeur de départ de votre champs, vous pouvez facilement lui assigner en même temps que vous le déclarez :
public class FieldsSample
{
private string name = "John Doe";
....
Une autre manière de procéder est d'assigner une valeur au champs dans le constructeur de la classe. Cela va remplacer la valeur assignée au champs au point de déclaration, et vous permet d'assigner des valeurs dynamiques.
Comme discuté précédemment, nous accédons aux membres d'une classe avec la notation point, comme "classe.membre". Cependant, lorsque nous accédons au membre de la classe en cours, nous utilisons le mot-clef "this", comme "this.membre". Voici un exemple plus complet, où nous déclarons quelques champs et nous les utilisons à l'intérieur d'une méthode :
public class Fields1
{
private string name = "John Doe";
private int age = 42;
public void Describe()
{
string description = this.name + " is " + this.age + " years old...";
Console.WriteLine(description);
}
}
Dans la méthode Describe() (et pas d'inquiétude, nous passerons aux méthodes dans les prochains articles), nous déclarons une variable locale appelée "description", avec une valeur basée sur nos deux champs déclarés. La variable "description" est un parfait exemple d'une variable qui devrait toujours être une variable et jamais un champs : elle est temporaire et pertinente uniquement dans la méthode qui l'utilise, alors que les champs pourraient être pertinents dans d'autres méthodes de la classe.
Résumé
Les champs fonctionnent un peu comme des variables globales, puisqu'elles peuvent être utilisées pour stocker des données qui peuvent être accédées de n'importe où à l'intérieur de la classe. Ils peuvent être aussi accessibles de l'extérieur de la classe déclarante , mais normalement, on utilise les propriétés pour cet usage. Nous parlerons des propriétés dans l'article suivant.