web-dev-qa-db-fra.com

Qu'est-ce que ça veut dire ? nom public {get; ensemble;}

Je vois ce calme souvent dans la documentation C #. Mais qu'est-ce que ça fait?

public class Car
{
   public Name { get; set; }
}
46
Slabo

C'est un raccourci pour:

private string _name;

public string Name
{
    get { return _name; }
    set { _name = value; }
}

Le compilateur génère la variable membre. Cela s'appelle un propriété automatique .

48
Bryan Watts

En termes simples, ils sont appelés accesseurs de propriété. Leur mise en œuvre peut être expliquée comme ci-dessous

1.get {return name} Le bloc de code dans l'accesseur get est exécuté lorsque la propriété est Read.

2.set {name = value} Le bloc de code dans l'accesseur set est exécuté lorsque la propriété est Assigned une nouvelle valeur.

Par exemple (en supposant que vous utilisez C #)

 class Person
 {
     private string name;  // the name field
     public string Name    // the Name property
     {
         get
         {
             return name;
         }
         set
         {
             name = value;
         }
     }
 }
  1. Maintenant, lorsque vous vous référez à cette propriété comme ci-dessous

    Person p = new Person (); // Instanciation de la classe ou création de l'objet 'p' de la classe 'Person'

    System.Console.Write(p.Name);  //The get accessor is invoked here
    

L'accesseur get est invoqué pour Lire la valeur de la propriété, c'est-à-dire que le compilateur essaie de lire la valeur de la chaîne 'nom'.

2.Lorsque vous Assignez une valeur (en utilisant un argument) à la propriété 'Nom' comme ci-dessous

Person p = new Person();
p.Name = "Stack"  // the set accessor is invoked here
Console.Writeline(p.Name) //invokes the get accessor
Console.ReadKey(); //Holds the output until a key is pressed

L'accesseur défini Assigne la valeur 'Empiler' à la 'Propriété de nom c'est-à-dire' Empiler 'est stockée dans la chaîne' nom '.

Sortie:

Empiler

33
Mohammed Moinuddin

C'est une propriété de lecture-écriture automatique. C'est un ajout C # 3.0. Quelque chose comme:

public class Car {
    private string name;
    public string Name { get { return name; } set { name = value; } }
}

sauf que vous ne pouvez pas accéder directement au champ de support.

10
Mehrdad Afshari

Cela s'appelle une propriété implémentée automatiquement et est nouveau dans C # 3. . C'est une syntaxe plus propre lorsque votre accès à la propriété n'a pas besoin de comportement ou de validation particulier. Sa fonction est similaire à:

public class Car
{
  private string _name;
  public string Name
  {
    get { return _name; }
    set {_name = value; }
  }
}

Ainsi, il enregistre une bonne quantité de code, mais vous laisse la possibilité de modifier la logique d'accesseur plus tard si le comportement ou les règles doivent changer.

4
Jeff Donnici

C'est l'équivalent de faire:

private string _Text;

public string Text 
{
    get { return _Text; }
    set { _Text = value; }
}

Sauf que vous n'avez pas accès à la variable privée à l'intérieur de la classe.

3
Darthg8r

Propriétés implémentées automatiquement

Résumé: dans C # 3.0 et versions ultérieures, les propriétés implémentées automatiquement rendent la déclaration de propriété plus concise lorsqu'aucune logique supplémentaire n'est requise dans les accesseurs de propriété.

1
adatapost