Propriété en lecture seule ou bien avec un ensemble privé que je devrais utiliser dans vb.net?
J'Aime .NET automatique de propriétés, en C#, il est très simple de déclarer readonly
bien en déclarant son set
section private
comme ceci:
public String Name{ get; private set; }
Mais quand j'ai essayé que dans VB.NET j'ai été choqué qu'il n'est pas pris en charge comme mentionné ici et je dois l'écrire comme suit:
Private _Name as String
Public ReadOnly Property Name as String
Get
return _Name
End Get
End Property
Ou:
Private _Name as String
Public Property Name as String
Get
return _Name
End Get
Private Set(value as String)
_Name = value
End Set
End Property
Quelle est la différence entre ces déclarations dans VB.NET
, qui est préférée et Pourquoi?
Modifier
Qui on affectera le temps de compilation, d'exécution ou de la performance à tous?
OriginalL'auteur Amir Ismail | 2012-01-26
Vous devez vous connecter pour publier un commentaire.
Dans le cas de
ReadOnly
, seuls ceux qui ont accès à la variable sous-jacente peut changer la valeur sous-jacente (c'est à dire des éléments au sein de la même classe, par exemple) en appliquant directement un tel changement. Dans ce dernier cas,Private Set
- c'est bien les mêmes éléments dans le cadre de la classe peut changer la valeur sous-jacente, mais vous pouvez le faire par le biais de la propriété.Qui est préférée est de circonstance: l'un des avantages de propriétés, c'est que vous pouvez, comme une méthode, ont en outre la mise en œuvre impliqués lors de l'application de la changer (bien que les effets secondaires devraient être évitées, vous risquez de le "valider" et de prendre l'exception, par exemple). Si il y a toujours autre chose à faire lors de la définition de la valeur, qui est fortement lié à la définition de la valeur, vous pouvez le faire au sein de cette propriété setter, plutôt que d'avoir à coder que la mise en œuvre partout où vous ne le
set
.OriginalL'auteur Grant Thomas
le premier bloc, vous permettra seulement d'obtenir la valeur de Nom. vous ne pouvez pas définir le Nom.
le deuxième bloc permet de définir la valeur de Nom à partir de l'intérieur de la classe. exemple:
Je choisirais l'option 1, car la deuxième option verbose, sans apporter de réelle valeur.
OriginalL'auteur Jason Meckley
La première déclaration de la propriété
ReadOnly
qui le rend si la propriété ne peut pas être modifié. La deuxièmePrivate Set
permet à la propriété à modifier dans la classe que vous travaillez dansMe.Name = "str"
.Dans les deux cas, la valeur sous-jacente peut toujours être modifié à l'intérieur de la classe à l'aide de
_Name = "str"
.OriginalL'auteur alundy
Notez que si vous utilisez le Roslyn compilateurs (.NET de 4,6 et plus, VS.NET 2015+), même lorsque le court VB.NET le formulaire est utilisé
avec aucune variable privée, les constructeurs de la classe sont encore autorisés à attribuer des valeurs à la propriété readonly. Vous pouvez même passer de la propriété à d'autres fonctions comme un
ByRef
paramètre.DotNetFiddle de cette classe
OriginalL'auteur Ross Presser