AIDE .NET

C# Getter Setter (Comment ça marche pour les développeurs)

Publié août 29, 2023
Partager:

Les Getters et les Setters sont des concepts essentiels dans les langages de programmation orientés objet tels que C#. Ces deux méthodes permettent de contrôler l'accès et la modification des propriétés de la classe. Dans ce tutoriel, nous allons explorer les aspects débutants et intermédiaires des getters et des setters privés de C# à l'aide de blocs de code.

Introduction aux Getters et Setters

Que sont les Getters et les Setters ?

À la base, les getters et setters ne sont rien d'autre que des méthodes portant le même nom dans une classe. Le getter renvoie la valeur d'une variable de champ privée, tandis que le setter en modifie l'importance. Ces méthodes garantissent que les données internes d'une classe(champs) est consulté ou modifié de manière sûre et correcte.

Pourquoi en avons-nous besoin ?

Imaginez que vous ayez une classe publique car avec une private string description property name. Si une personne extérieure à cette classe souhaite connaître la description, elle ne peut pas y accéder directement car elle est privée. C'est là qu'intervient le rôle des getters et setters.

Un getter permettrait aux utilisateurs de récupérer la valeur d'une chaîne privée description sans leur donner un accès direct pour la modifier. D'autre part, un "setter" permettrait aux utilisateurs de modifier la description implicite du paramètre dans les conditions que nous avons définies.

Modificateurs d'accès

Les modificateurs d'accès définissent le niveau de visibilité et d'accessibilité d'un champ ou d'une propriété depuis l'extérieur de la classe. Les modificateurs les plus couramment utilisés sont public et private.

  • Public : Les champs ou propriétés déclarés public sont accessibles depuis n'importe quel endroit de votre programme. Par exemple, vous pouvez avoir une propriété public int age qui peut être accédée et modifiée par n'importe quelle partie de votre code.
  • Privé : Les propriétés ou champs déclarés privés ne sont accessibles qu'à l'intérieur de la classe définie, par exemple private int age. Cette encapsulation permet d'éviter les modifications non autorisées et garantit que l'état interne de la classe est maintenu correctement.

Simple Getter et Setter

Commençons par un exemple simple.

//set accessor
public class Person
{
    private string name;  // This is a private string name property variable

    public string GetName()   // This is the getter
    {
        return name;
    }

    public void SetName(string newName)   // This is the setter, new value
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}
//set accessor
public class Person
{
    private string name;  // This is a private string name property variable

    public string GetName()   // This is the getter
    {
        return name;
    }

    public void SetName(string newName)   // This is the setter, new value
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}
'set accessor
Public Class Person
	Private name As String ' This is a private string name property variable

	Public Function GetName() As String ' This is the getter
		Return name
	End Function

	Public Sub SetName(ByVal newName As String) ' This is the setter, new value
		name = newName
	End Sub
End Class

Shared Sub Main()
	Dim person As New Person()
	person.SetName("John")
	Console.WriteLine(person.GetName())
End Sub
VB   C#

Dans la classe Person ci-dessus, nous avons à la fois un getter(GetName) et un passeur(SetName) pour la propriété name. Lorsque vous exécutez la méthode static void Main, elle affichera "John" car nous avons défini cette valeur pour le nom à l'aide du setter.

Propriétés mises en œuvre automatiquement

Vous vous demandez peut-être : "Dois-je toujours écrire des méthodes distinctes pour les getters et les setters ?" La réponse est "non" C# a introduit un concept appelé "propriétés auto-implémentées" ou "propriétés automatiques" pour simplifier cela.

En C#, vous pouvez utiliser les propriétés automatiques, qui vous permettent de déclarer un "champ privé" et sa propriété associée. En voici un exemple :

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property, public string Name
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  // Using setter
    Console.WriteLine(student.Name);  // Using getter
}
public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property, public string Name
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  // Using setter
    Console.WriteLine(student.Name);  // Using getter
}
Public Class Student
	Public Property Name() As String ' -  This is an auto-implemented or automatic property, public string Name
	Public Property Title() As String
End Class

Shared Sub Main()
	Dim student As New Student()
	student.Name = "Alice" ' Using setter
	Console.WriteLine(student.Name) ' Using getter
End Sub
VB   C#

Dans la classeStudent, la propriétéNameest à la fois un getter et un setter, qui sont auto-implémentés. Le compilateur C# crée en coulisses un champprivate string name`, et la propriété Name permet d'accéder à ce champ.

Modificateurs d'accès avancés dans les propriétés

Propriétés en lecture seule

Il peut arriver que vous souhaitiez fournir une propriété qui peut être lue mais non modifiée de l'extérieur. C'est là que les propriétés en lecture seule s'avèrent utiles. Vous pouvez omettre le setter dans une propriété pour la rendre en lecture seule.

Supposons que nous voulions ajouter une propriété string Description en lecture seule à notre classe Person :

public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
Public Class Person
	Public Property Name() As String
	Public ReadOnly Property Description() As String

	Public Sub New(ByVal name As String, ByVal description As String)
		Me.Name = name
		Me.Description = description
	End Sub
End Class
VB   C#

Dans cet exemple, la propriété Description ne peut être définie que dans le constructeur de la classe Person avec moins de code. Une fois défini, il ne peut être modifié de l'extérieur.

Les sédentaires privés

Il peut arriver que l'on veuille autoriser la lecture d'une propriété depuis l'extérieur de la classe, mais seulement sa modification depuis l'intérieur de la classe. Pour ce faire, on utilise un "ensemble privé".

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}
public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}
Public Class Program
	Private privateDescription As String
	Public Property Description() As String
		Get
			Return privateDescription
		End Get
		Private Set(ByVal value As String)
			privateDescription = value
		End Set
	End Property

	Public Sub New()
		Description = "This is a program about getters and setters."
	End Sub
End Class

Friend Class ProgramTest
	Shared Sub Main()
		Dim myProgram As New Program()
		Console.WriteLine(myProgram.Description) ' Allowed
		' myProgram.Description = "New Description";  // Not allowed
	End Sub
End Class
VB   C#

Dans la classe Program, la propriété Description a un private set, ce qui signifie qu'elle ne peut pas être modifiée depuis l'extérieur de la classe, garantissant ainsi l'intégrité des données.

Héritage et surcharge

Lorsque vous travaillez avec des classes dérivées, vous pouvez remplacer les méthodes getter et setter pour personnaliser leur comportement. Cela vous permet d'ajouter une logique supplémentaire lors de l'obtention ou de la définition de valeurs.

public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
Public Class Person
	Public Overridable Property Name() As String
End Class

Public Class Student
	Inherits Person

	Private studentID As String

	Public Overrides Property Name() As String
		Get
			Return MyBase.Name
		End Get
		Set(ByVal value As String)
			If Not String.IsNullOrEmpty(value) Then
				MyBase.Name = value
			End If
		End Set
	End Property
End Class
VB   C#

Dans cet exemple, la classe Student hérite de Person et surcharge le setter de la propriété Name. Il ajoute un contrôle de validation avant de définir le nom, en s'assurant qu'il n'est pas vide ou nul.

Présentation d'Iron Suite pour améliorer votre développement C

Iron Suite est une collection d'outils issus d'efforts de recherche qui renforcent considérablement les capacités de développement de C#. Il comprend IronPDF, IronXL, IronOCR et IronBarcode. Chacun de ces outils a une fonction unique et peut être intégré dans divers aspects de C#.

IronPDF - Un puissant outil de gestion des PDF

En savoir plus sur IronPDF qui est une bibliothèque permettant aux développeurs de créer, lire et modifier des documents PDF en C#. Qu'il s'agisse de convertir du HTML en PDF ou de gérer des métadonnées PDF à l'aide de getters et setters, IronPDF vous couvre.

IronXL - La manipulation d'Excel en toute simplicité

Lorsque vous travaillez avec des fichiers Excel,Bibliothèque IronXL Excel simplifie le processus de lecture et d'écriture. Cet outil peut être utilisé pour manipuler les chaînes ou les entiers privés et publics des fichiers Excel, de la même manière que vous pourriez manipuler des données au sein d'une classe en utilisant la même syntaxe pour les getters et setters en C#.

IronOCR - Reconnaissance optique de caractères en C# ;

Explorer IronOCRla bibliothèque de reconnaissance optique de caractères, qui traduit les images en texte consultable. Si votre application implique la lecture de texte à partir de documents numérisés, les puissantes capacités d'IronOCR peuvent être facilement intégrées. Elle peut gérer des champs privés et des descriptions de chaînes publiques, tout comme vous l'attendriez d'une classe Personne ou d'une classe Étudiant de l'exemple précédent.

IronBarcode - Bibliothèque de lecture et d'écriture de codes-barres

Découvrez les fonctionnalités d'IronBarcode pour les applications nécessitant la lecture et l'écriture de codes-barres. Il permet à la fois un accès direct aux données du code-barres et une personnalisation par le biais de propriétés automatiques, tout comme les getters et setters utilisés dans la programmation C#.

Iron Suite et Getters et Setters

La suite Iron s'intègre parfaitement au développement C#, y compris les getters et setters. Ces outils apportent une valeur ajoutée à tout projet C#.

Conclusion

En résumé :

  1. Getter et Setter` : Ils permettent d'accéder aux champs privés d'une classe et de les modifier.

  2. Auto Properties : Une manière élégante d'avoir des getters et setters automatiques à l'aide de propriétés auto-implémentées.

  3. les "modificateurs d'accès" : Ils permettent d'affiner l'accessibilité des propriétés.

    À ce stade, vous devriez avoir une bonne maîtrise de l'utilisation des getters et setters en C#.

    La suite d'outils d'Iron Suite offre des fonctionnalités incroyables aux développeurs C#. Chacun de ces produits, y compris IronPDF, IronXL, IronOCR et IronBarcode, est accompagné d'unessai gratuit des outils d'Iron Softwarevous permettant d'explorer et d'intégrer ces puissantes bibliothèques dans vos projets sans aucun investissement initial.

    Lorsque vous êtes prêt à vous engager, les licences individuelles commencent à partir de $749. Si plusieurs de ces outils répondent à vos besoins, vous pouvez profiter de l'occasion pour acheter l'ensemble de la suite Iron pour le prix de deux licences individuelles.

< PRÉCÉDENT
Opérateurs logiques C# (Comment ça marche pour les développeurs)
SUIVANT >
C# Split String (Comment ça marche pour les développeurs)