J'ai vu quelque chose comme ce qui suit quelque part et je me demandais ce que cela signifiait. Je sais qu'ils sont des getters et des setters, mais je veux savoir pourquoi la chaîne Type est définie comme ceci. Merci de m'avoir aidé.
public string Type { get; set; }
c#
getter-setter
Maya
la source
la source
"Type"
, dont le type .NET estSystem.string
. Il n'y a rien de plus.Réponses:
Ce sont des propriétés implémentées automatiquement (propriétés automatiques en abrégé).
Le compilateur générera automatiquement l'équivalent de l'implémentation simple suivante:
la source
public int b { get { return b * 2; } }
aucun deuxième champ nécessaire. Mais je pense que lorsque vous avez le passeur avec un corps, vous avez besoin du deuxième champ. Et celui-ci montre un passeur avec un corps. Bien que cela fasse la même chose que la doublure de l'interrogateur.=>
syntaxe et aucun mot-clé de retour. Même si ce n'était pas ce que j'avais en tête. J'avais à l'esprit que le deuxième champ n'était pas nécessaire, même si j'ai depuis constaté que le deuxième champ était parfois nécessaire. Dans l'exemple ici, le deuxième champ n'est pas nécessaire ('cos un setter par défaut sans corps ferait cela), mais le répondant le mettait dans (corps du setter et deuxième champ), pour expliquer au questionneur ce que leur ligne sans le le deuxième champ faisait.C'est une propriété automatique et c'est la notation abrégée pour ceci:
la source
<Type>k__BackingField
une réflexion.En C # 6:
Il est maintenant possible de déclarer les propriétés automatiques sous forme de champ:
Propriétés automatiques en lecture seule
la source
N'est-ce pas différent de faire
la source
Cela signifie que le compilateur définit un champ de sauvegarde au moment de l'exécution. Il s'agit de la syntaxe des propriétés implémentées automatiquement.
Plus d'informations: Propriétés implémentées automatiquement
la source
C'est une propriété automatiquement sauvegardée, essentiellement équivalente à
la source
Celles-ci sont appelées propriétés automatiques.
http://msdn.microsoft.com/en-us/library/bb384054.aspx
Fonctionnellement (et en termes de IL compilé), ils sont les mêmes que les propriétés avec des champs de sauvegarde.
la source
Je sais que c'est une vieille question, mais avec la sortie de C # 6, vous pouvez maintenant faire quelque chose comme ça pour les propriétés privées.
la source
Vous pouvez également utiliser une expression lambda
la source