web-dev-qa-db-fra.com

Comment définir la valeur par défaut pour les propriétés implémentées automatiquement dans ASP.NET

J'ai appris que C # 3.0 offrait une nouvelle fonctionnalité des propriétés implémentées automatiquement. Cela m'a plu car nous n'avons pas à déclarer une variable privée supplémentaire (comparée à la propriété précédente). J'utilisais auparavant une propriété i.e. 

private bool isPopup = true;
public bool IsPopup
{
    get
    {
      return isPopup;
    }
    set
    {
      isPopup = value;
    }
}

Maintenant, je l'ai converti en propriété implémentée automatiquement, c'est-à-dire.

public bool IsPopup
{
    get; set;
}

Je veux définir la valeur par défaut de cette propriété sur true sans l'utiliser, pas même dans la méthode page_init, j'ai essayé mais je n'ai pas réussi. Quelqu'un peut-il expliquer comment faire cela?

24
Imran Rizvi

Vous pouvez initialiser la propriété dans le constructeur par défaut:

public MyClass()
{
   IsPopup = true;
}

Avec C # 6.0, il est possible d’initialiser la propriété à la déclaration comme des champs de membre normaux:

public bool IsPopup { get; set; } = true;  // property initializer

Il est maintenant même possible de créer une véritable propriété automatique en lecture seule que vous pouvez initialiser directement ou dans le constructeur, mais non définie dans d'autres méthodes de la classe.

public bool IsPopup { get; } = true;  // read-only property with initializer
43
slfan

Les attributs spécifiés pour une propriété automatique ne s'appliquent pas au champ de sauvegarde; un attribut pour une valeur par défaut ne fonctionnera donc pas pour ce type de propriété.

Vous pouvez cependant initialiser une propriété auto:

VB.NET

Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)

C # 6.0 et supérieur

public string FirstName { get; set; } = "James";
public int PartNo { get; set; } = 44302;
public List<Order> Orders { get; set; } = new List<Order>(500);

C # 5.0 et inférieur

Malheureusement, les versions C # inférieures à 6.0 ne prennent pas cela en charge. Vous devez donc initialiser les valeurs par défaut des propriétés automatiques dans le constructeur.

7
Ed DeGagne

Avez-vous essayé DefaultValueAttribute

0

Vous pouvez utiliser valeur de propriété par défaut comme ci-dessous

Un avantage de cette méthode est que vous n'avez pas besoin de vérifier les valeurs NULL pour Booléen types

using System.ComponentModel; 

public class ClassName
 {
   [DefaultValue(true)]
   public bool IsPopup{ get; set; }
 }
0
Sampath
using System.ComponentModel;

[DefaultValue(true)]
public bool IsPopup
{
    get
    {
      return isPopup;
    }
    set
    {
      isPopup = value;
    }
}
0
Nawazish