Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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.
À 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.
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.
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.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
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.
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
Dans la classe
Student, 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 champ
private string name`, et la propriété Name permet d'accéder à ce champ.
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
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.
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
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.
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
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.
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#.
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.
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#.
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.
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#.
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#.
En résumé :
Getter
et Setter` : Ils permettent d'accéder aux champs privés d'une classe et de les modifier.
Auto Properties
: Une manière élégante d'avoir des getters et setters automatiques à l'aide de propriétés auto-implémentées.
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.
9 produits de l'API .NET pour vos documents de bureau