Passer au contenu du pied de page
.NET AIDE

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

Les getters et setters sont des concepts essentiels dans les langages de programmation orientés objet comme C#. Ces deux méthodes nous permettent de contrôler l'accès et la modification des propriétés de la classe. Dans ce tutoriel, nous explorerons à la fois les aspects débutant et intermédiaire des getters et setters privés en C# en utilisant des blocs de code.

Introduction aux Getters et Setters

Que sont les Getters et Setters ?

À la base, les getters et setters ne sont rien d'autre que des méthodes permettant d'accéder à des variables privées dans une classe. Le getter retourne la valeur d'une variable de champ privé, tandis que le setter la modifie. Ces méthodes garantissent que les données internes (champs) d'une classe sont accédées ou modifiées de manière sécurisée et correcte.

Pourquoi en avons-nous besoin ?

Imaginez avoir une classe publique Car avec une propriété string private description. Si quelqu'un en dehors de cette classe veut connaître la description, il ne peut pas y accéder directement car elle est privée. C'est là qu'interviennent les getters et setters.

Un getter permettrait aux utilisateurs de récupérer la valeur d'un string description privé sans leur donner un accès direct pour la modifier. D'autre part, un setter permettrait aux utilisateurs de modifier la description selon 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 privé.

  • Public : Les champs ou propriétés déclarés public peuvent être accédés de n'importe où dans votre programme. Par exemple, vous pouvez avoir une propriété int public 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é ne peuvent être accédés qu'au sein de la classe définie, par exemple private int age. Cette encapsulation aide à prévenir les modifications non autorisées et garantit que l'état interne de la classe est bien maintenu.

Getter et Setter Simples

Commençons par un exemple simple.

using System;

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

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

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

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
using System;

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

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

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

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
Imports System

Public Class Person
	Private name As String ' This is a private string name property variable

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

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

Friend Class Program
	Shared Sub Main()
		Dim person As New Person()
		person.SetName("John")
		Console.WriteLine(person.GetName())
	End Sub
End Class
$vbLabelText   $csharpLabel

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

Propriétés Auto-Implémentées

Maintenant, vous pourriez vous demander, "Dois-je toujours écrire des méthodes distinctes pour les getters et 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 des propriétés automatiques, ce qui vous donne une façon abrégée de déclarer un champ privé et sa propriété associée. Voici un exemple :

using System;

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

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
using System;

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

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
Imports System

Public Class Student
	Public Property Name() As String ' -  This is an auto-implemented or automatic property
	Public Property Title() As String ' -  Another auto-implemented property
End Class

Friend Class Program
	Shared Sub Main()
		Dim student As New Student()
		student.Name = "Alice" ' Using setter
		Console.WriteLine(student.Name) ' Using getter
	End Sub
End Class
$vbLabelText   $csharpLabel

Dans la classe Student, la propriété Name est à la fois un getter et un setter, qui sont auto-implémentés. Le compilateur C# crée un champ string name privé en arrière-plan, et la propriété Name fournit un accès à ce champ.

Modificateurs d'Accès Avancés dans les Propriétés

Propriétés en Lecture Seule

Parfois, vous pourriez vouloir fournir une propriété qui peut être lue mais pas modifiée de manière externe. C'est là que les propriétés en lecture seule sont utiles. Vous pouvez omettre le setter dans une propriété pour la rendre en lecture seule.

Disons que nous voulons 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
$vbLabelText   $csharpLabel

Dans cet exemple, la propriété Description ne peut être définie que dans le constructeur de la classe Person. Une fois fixée, elle ne peut pas être modifiée de manière externe.

Setters Privés

Parfois, vous pourriez vouloir autoriser la propriété à être lue depuis l'extérieur de la classe mais seulement définie de l'intérieur de la classe. Cela est réalisé en utilisant un set privé.

using System;

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
    }
}
using System;

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
    }
}
Imports System

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
$vbLabelText   $csharpLabel

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

Héritage et Surdéfinition

Lorsqu'on travaille 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 pendant la récupération ou la définition des 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
$vbLabelText   $csharpLabel

Dans cet exemple, la classe Student hérite de Person et remplace le setter de la propriété Name. Elle ajoute une vérification de validation avant de définir le nom, s'assurant qu'il n'est ni vide ni nul.

Présentation de Iron Suite pour Améliorer votre Développement C

Iron Suite est un ensemble d'outils de recherche qui boostent considérablement les capacités de développement C#. Il inclut IronPDF, IronXL, IronOCR, et IronBarcode. Chacun de ces outils a une utilité unique et peut être intégré dans divers aspects de C#.

IronPDF - Un Outil Puissant de Gestion PDF

En savoir plus sur IronPDF, qui est une bibliothèque permettant aux développeurs de créer, lire et éditer des documents PDF en C#. Que ce soit pour convertir du HTML en PDF ou gérer les métadonnées PDF via des getters et setters, IronPDF est là pour vous.

IronPDF excelle dans la conversion HTML en PDF, garantissant une préservation précise des mises en page et styles originaux. Il est parfait pour créer des PDF à partir de contenus basés sur le Web tels que des rapports, des factures et de la documentation. Avec le support des fichiers HTML, des URLs et des chaînes HTML brutes, IronPDF produit facilement des documents PDF de haute qualité.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronXL - Manipulation d'Excel Facile

Lorsque vous travaillez avec des fichiers Excel, la bibliothèque IronXL Excel simplifie le processus de lecture et d'écriture. Cet outil peut être utilisé pour manipuler les chaînes ou entiers privés et publics des fichiers Excel, de la même manière que vous pourriez gérer les 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

Explorez IronOCR, une 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 capacités puissantes de IronOCR peuvent être facilement intégrées. Il peut gérer les champs privés et les descriptions de chaînes publiques, tout comme vous vous y attendriez dans une classe Person ou une classe Student de l'exemple précédent.

IronBarcode - Bibliothèque de Lecture et É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 de codes-barres et une personnalisation via des propriétés automatiques, tout comme les getters et setters utilisés dans la programmation C#.

Iron Suite et Getters et Setters

Le package Iron Suite s'intègre parfaitement au développement C#, y compris les getters et setters. Ces outils ajoutent de la valeur à tout projet C#.

Conclusion

Pour résumer :

  1. Getter et Setter : Ils aident à accéder et modifier les champs privés d'une classe.
  2. Propriétés Automatiques : Un moyen élégant d'avoir des getters et setters automatiques avec l'aide des propriétés auto-implémentées.
  3. Modificateurs d'Accès : Ils aident à affiner l'accessibilité des propriétés.

À présent, vous devriez avoir une bonne compréhension de comment utiliser les getters et setters en C#.

La suite d'outils d'Iron Suite offre une fonctionnalité incroyable pour les développeurs C#. Chacun de ces produits, y compris IronPDF, IronXL, IronOCR et IronBarcode, est livré avec une version d'essai gratuite des outils Iron Software, vous permettant d'explorer et d'intégrer ces bibliothèques puissantes dans vos projets sans aucun investissement initial.

Lorsque vous êtes prêt à vous engager, les licences individuelles commencent à partir de $799. Si vous constatez que plus d'un de ces outils répond à vos besoins, vous pouvez profiter de l'opportunité d'acheter l'ensemble du package Iron Suite pour le prix de seulement deux licences individuelles.

Questions Fréquemment Posées

Quel est le but des getters et setters en C# ?

Les getters et setters en C# sont utilisés pour contrôler l'accès aux propriétés privées d'une classe. Les getters récupèrent la valeur d'une propriété, tandis que les setters permettent de la modifier. Cette encapsulation assure un accès sécurisé et contrôlé aux données de la classe.

Comment les modificateurs d'accès affectent-ils la visibilité des propriétés en C# ?

Les modificateurs d'accès tels que public et private déterminent la visibilité et l'accessibilité des propriétés d'une classe en C#. Les propriétés public sont accessibles de partout, tandis que les propriétés private sont restreintes à la classe dans laquelle elles sont déclarées.

Quelles sont les propriétés auto-implémentées en C# ?

Les propriétés auto-implémentées offrent un moyen abrégé de déclarer des propriétés en C#. Elles permettent de définir une propriété sans écrire explicitement un champ, un getter et un setter séparés. Le compilateur crée automatiquement un champ support pour vous.

Comment pouvez-vous créer une propriété en lecture seule en C# ?

En C#, vous pouvez créer une propriété en lecture seule en omettant le setter dans la déclaration de la propriété. Cela signifie que la propriété ne peut être définie qu'à l'intérieur de la classe, par exemple dans un constructeur, et ne peut pas être modifiée de l'extérieur.

Comment utilisez-vous les setters privés en C# ?

Les setters privés en C# permettent à une propriété d'être modifiée uniquement à l'intérieur de la classe dans laquelle elle est déclarée, tout en permettant à un code externe de lire la propriété. Cela est utile pour maintenir l'intégrité des données tout en fournissant un accès contrôlé.

Pouvez-vous remplacer le comportement des propriétés dans les classes dérivées en C# ?

Oui, en C# vous pouvez remplacer le comportement des propriétés dans les classes dérivées en marquant la propriété dans la classe de base comme virtual et en utilisant le mot-clé override dans la classe dérivée. Cela permet de personnaliser le comportement du getter et du setter.

Comment pouvez-vous convertir HTML en PDF en C# ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

Quels outils sont disponibles pour améliorer le développement C# avec des fonctionnalités PDF et code-barres ?

La suite Iron propose des outils tels que IronPDF et IronBarcode, qui améliorent le développement C# en offrant des fonctionnalités comme la gestion des PDF et la lecture/écriture de code-barres. Ces outils s'intègrent parfaitement aux projets C#.

Qu'est-ce qui rend la suite Iron bénéfique pour les développeurs C# ?

La suite Iron est bénéfique pour les développeurs C# car elle offre une gamme d'outils puissants qui s'intègrent parfaitement aux projets C#. Ces outils fournissent des fonctionnalités avancées telles que la gestion des PDF, la manipulation d'Excel, les capacités d'OCR et la lecture/écriture de code-barres.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite