Comment définir la valeur d'une propriété en lecture seule avec les getters et les setters?
Ne sais pas si j'ai rédigé cet correctement ... mais j'ai le code suivant:
public Guid ItemId
{
get;
}
public TransactionItem()
{
this.ItemId = Guid.Empty;
}
Naturellement, je suis en lecture seule question ... je ne comprends. Est-il de toute façon à définir la valeur de cette propriété sans avoir à faire quelque chose comme ci-dessous:
Guid _itemId = Guid.Empty;
public Guid ItemId
{
get
{
return _itemId;
}
set
{
_itemId = value;
}
}
ou
public Guid ItemId
{
get;
internal set;
}
Merci d'avance!
OriginalL'auteur mattruma | 2009-02-19
Vous devez vous connecter pour publier un commentaire.
Je pencherais pour cette:
Bien sûr, il serait ouvert pour le réglage à l'intérieur de cette classe, mais puisque vous l'écrire, j'espère que vous avez le sentiment de ne pas casser vos propres intentions...
À mon avis, des choses comme readonly propriétés, sont surtout important lorsque vu de l'extérieur. De l'intérieur, il n'importe pas vraiment ce que c'est, cause il, vous êtes le Roi =)
Cela ressemble à la façon dont je vais y aller! Merci!!!! A été plus ou moins curieux de voir si elle pouvait être fait sans avoir un "set".
l'ouverture de la porte d'une maison sans porte est assez difficile... :p
Cela semble être la façon de le faire. Je souhaite qu'ils avaient en réalité une
readonly set;
en plus deprivate set;
. La différence serait que la propriété ne peut être établi dans les constructeurs permettant l'immuabilité de l'être appliquées dans tout le reste de la classe.J'espère qu'ils font. Ce serait merveilleux! Je n'ai aucune idée pourquoi il n'a jamais eu lieu pour moi d'avoir un champ en lecture seule et une seule propriété. Malheureusement, c'est beaucoup plus détaillé que la lecture-seulement ensemble, mais il n'résoudre le problème de la mutabilité. Merci pour l'astuce!
OriginalL'auteur Svish
Si vous avez juste besoin de la
ItemId
propriété en lecture seule pour les utilisateurs externes de votre classe, puis Svish la réponse est le chemin à parcourir.Si vous avez besoin d'
ItemId
à être en lecture seule à l'intérieur de la classe elle-même, alors vous aurez besoin de faire quelque chose comme ceci:OriginalL'auteur LukeH
Vous pouvez utiliser readonly mot-clé
OriginalL'auteur Jakub Šturc
Je crains que votre question n'est pas très claire, mais si il n'y a pas un accesseur de propriété défini, alors vous avez certainement ne peut pas appeler cela.
Êtes-vous fait après un mis en place automatiquement en lecture seule propriété, permettant paramètre dans le constructeur? Si oui, je crains que n'est pas disponible, autant que je l'aimerais.
Juste de s'étendre sur ce que je veux dire, j'avais comme pour être en mesure de le faire:
Fondamentalement, il serait "faire un bien comme un champ en lecture seule."
Pas de problème. J'ai modifier la réponse à montrer ce que je voudrais être en mesure de le faire - je crois que c'est ce que vous voulez aussi.
OriginalL'auteur Jon Skeet
Utilisez un setter, ou de définir le champ de stockage ?
(Mais, alors vous devez vous assurer que le nom de votre champ de stockage peut être déterminé en se basant sur la propriété-nom.
Par exemple, assurez-vous que votre champ de stockage a toujours le même nom que la propriété de nom, mais est précédé d'un trait de soulignement, comme
NHibernate
t-il à l'aide de ses accès-stratégies).OriginalL'auteur Frederik Gheysels