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?
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
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.
Avez-vous essayé DefaultValueAttribute
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; }
}
using System.ComponentModel;
[DefaultValue(true)]
public bool IsPopup
{
get
{
return isPopup;
}
set
{
isPopup = value;
}
}