Champ vs propriété en C#
Ce tutoriel expliquera la différence entre les champs et les propriétés dans les classes en C#. Pour mieux illustrer cela, vous devez d’abord connaître les concepts suivants.
Qu’est-ce qu’une classe ?
Une classe est une collection de membres de données qui vous permet de créer vos types personnalisés en agissant comme un plan ou un modèle pour vos objets. Au sein d’une classe, les champs et les propriétés sont similaires en ce sens qu’ils peuvent stocker des données, mais la différence réside dans la manière dont ils sont censés être utilisés.
Qu’est-ce qu’un champ ?
Un field
enregistre les données sous forme de variable. Il peut être rendu public puis accessible via la classe, mais il est recommandé de limiter et de masquer autant de données que possible. Cela vous donne plus de contrôle et évite les erreurs inattendues en garantissant que la seule façon pour une personne d’accéder aux données est d’utiliser l’une des méthodes publiques de la classe.
Qu’est-ce qu’une propriété ?
Une propriété expose des champs. L’utilisation directe des propriétés au lieu des champs fournit un niveau d’abstraction où vous pouvez modifier les champs sans affecter la manière externe dont ils sont accessibles par les objets qui utilisent votre classe. Les propriétés vous permettent également d’effectuer des calculs avant de définir la valeur du champ ou de garantir la validité des données.
Exemple:
using System;
namespace FieldProperty_Sample {
class Program {
static void Main(string[] args) {
// Initialize a new Tutorial_Class
Tutorial_Class tutorial = new Tutorial_Class();
// Set the field values through its public property
tutorial.Name = "Sample Tutorial";
tutorial.Created_Date = new DateTime(2021, 12, 31);
tutorial.Description = "Sample Description";
// Print the class values to the console
Console.WriteLine("Tutorial Name: " + tutorial.Name);
Console.WriteLine("Created Date: " + tutorial.Created_Date.ToShortDateString());
Console.WriteLine("Sample Description: " + tutorial.Description);
Console.ReadLine();
}
public class Tutorial_Class {
// These are the private fields that are only accessible by the class
// The actual data is stored here and can be retrieved/set by the properties
private string name;
private DateTime created_date;
// All of the items below are properties that have the power to get and set the field values
public string Name {
get { return name; }
set { name = value; }
}
public DateTime Created_Date {
get { return created_date; }
set { created_date = value; }
}
// This is another kind of property, an AutoProperty
// It acts the same as the original property but does not require you to declare the private
// field The private field is automatically generated for you
public string Description { get; set; }
}
}
}
Dans l’exemple ci-dessus, nous avons un exemple de classe qui utilise des champs, des propriétés et des propriétés automatiques. Après avoir initialisé une instance de Tutorial_Class, nous définissons les valeurs à l’aide des propriétés publiques de la classe. Vous pouvez noter que si vous essayez d’accéder directement aux champs, vous obtiendrez une erreur Program.Tutorial_Class.x is inaccessible due to its protection level
. Enfin, nous imprimons les valeurs sur la console pour montrer que les modifications ont été apportées.
Production :
Tutorial Name : Sample Tutorial Created Date : 31 / 12 /
2021 Sample Description : Sample Description