constructeur - Quelle est la meilleure façon de donner une auto-propriété C# une valeur initiale

Mots clés : c#constructorgettersetterautomatic-propertiesc#

meilleur 5 Réponses constructeur - Quelle est la meilleure façon de donner une auto-propriété C# une valeur initiale

vote vote

99

public int X { get; set; } = x; // C# 6 or higher 
vote vote

81

public class DefaultValuesTest {         public DefaultValuesTest()     {                        foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(this))         {             DefaultValueAttribute myAttribute = (DefaultValueAttribute)property.Attributes[typeof(DefaultValueAttribute)];              if (myAttribute != null)             {                 property.SetValue(this, myAttribute.Value);             }         }     }      public void DoTest()     {         var db = DefaultValueBool;         var ds = DefaultValueString;         var di = DefaultValueInt;     }       [System.ComponentModel.DefaultValue(true)]     public bool DefaultValueBool { get; set; }      [System.ComponentModel.DefaultValue("Good")]     public string DefaultValueString { get; set; }      [System.ComponentModel.DefaultValue(27)]     public int DefaultValueInt { get; set; } } 
vote vote

77

class Person  {     public Person()     {         //do anything before variable assignment          //assign initial values         Name = "Default Name";          //do anything after variable assignment     }     public string Name { get; set; } } 
public string Name { get; set; } = "Default Name"; 
vote vote

64

class Person {     private string _name;      public string Name      {          get          {             return string.IsNullOrEmpty(_name) ? "Default Name" : _name;         }           set { _name = value; }      } } 
vote vote

58

public class Coordinate {      public int X { get; set; } = 34; // get or set auto-property with initializer      public int Y { get; } = 89;      // read-only auto-property with initializer      public int Z { get; }            // read-only auto-property with no initializer                                      // so it has to be initialized from constructor          public Coordinate()              // .ctor()     {         Z = 42;     } } 

Questions similaires