Donc, si je comprends bien, c'est { get; set; }
une "propriété automatique" qui, tout comme @Klaus et @Brandon, est un raccourci pour écrire une propriété avec un "champ de sauvegarde". Donc dans ce cas:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
Cependant, si vous êtes comme moi - il y a environ une heure - vous ne comprenez pas vraiment ce que sont les propriétés et les accesseurs , et vous n'avez pas non plus la meilleure compréhension de certaines terminologies de base. MSDN est un excellent outil pour apprendre des trucs comme celui-ci, mais il n'est pas toujours facile à comprendre pour les débutants. Je vais donc essayer d'expliquer cela plus en profondeur ici.
get
et set
sont des accesseurs , ce qui signifie qu'ils peuvent accéder aux données et aux informations dans des champs privés (généralement à partir d'un champ de support ) et le font généralement à partir de propriétés publiques (comme vous pouvez le voir dans l'exemple ci-dessus).
Il est indéniable que la déclaration ci-dessus est assez déroutante, alors allons dans quelques exemples. Disons que ce code fait référence aux genres de musique. Donc, dans la classe Genre, nous allons vouloir différents genres de musique. Disons que nous voulons avoir 3 genres: Hip Hop, Rock et Country. Pour ce faire, nous utiliserions le nom de la classe pour créer de nouvelles instances de cette classe.
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
Maintenant que nous avons créé les instances de la classe Genre, nous pouvons définir les noms de genre en utilisant la propriété 'Name' qui a été définie ci-dessus.
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
Nous pouvons définir le nom de «g1» sur Hip Hop en écrivant ce qui suit
g1.Name = "Hip Hop";
Ce qui se passe ici est en quelque sorte complexe. Comme je l'ai déjà dit, get
et set
accédez à des informations à partir de champs privés auxquels vous ne pourriez pas accéder autrement. get
peut uniquement lire les informations de ce champ privé et les renvoyer. set
ne peut écrire que des informations dans ce domaine privé. Mais en ayant une propriété avec les deux get
et set
nous pouvons faire ces deux fonctions. Et en écrivant, g1.Name = "Hip Hop";
nous utilisons spécifiquement la set
fonction de notre propriété Name
set
utilise une variable implicite appelée value
. Fondamentalement, cela signifie que chaque fois que vous voyez "valeur" à l'intérieur set
, cela fait référence à une variable; la variable "valeur". Lorsque nous écrivons, g1.Name =
nous utilisons le =
pour passer la value
variable qui dans ce cas est "Hip Hop"
. Vous pouvez donc essentiellement y penser comme ceci:
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
Il est important de noter que l'exemple ci-dessus n'est pas réellement écrit dans le code. Il s'agit plutôt d'un code hypothétique qui représente ce qui se passe en arrière-plan.
Alors maintenant que nous avons défini le nom de l'instance g1 de Genre , je crois que nous pouvons obtenir le nom en écrivant
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
et si nous courions cela, nous aurions "Hip Hop"
dans notre console.
Donc, pour les besoins de cette explication, je vais également compléter l'exemple avec des sorties
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
Production:
"Genres: Hip Hop, Rock, Country"