这是一件我不太一致的事情,而且总是对别人做什么感到好奇。
如何访问内部属性(私有或公共)?
例如,您拥有以下属性:
Private _Name As String
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
在同一个类中,在另一个函数中,您更喜欢哪一个?为什么?
_Name = "Johnny"
或
Name = "Johnny"
忽略了我使用名称而不是Me.Name.这一事实。
发布于 2008-12-10 03:45:59
就我个人而言,我更喜欢在可能的情况下使用该房产。这意味着您仍然可以获得验证,并且可以轻松地在属性访问上放置断点。在您试图对两个相互验证的属性进行更改时,这是行不通的--例如,"min和max“对,其中每个属性都有一个验证约束,因此始终存在min <= max
。您可能已经(C#):
public void SetMinMax(int min, int max)
{
if (max > min)
{
throw new ArgumentOutOfRangeException("max";
}
// We're okay now - no need to validate, so go straight to fields
this.min = min;
this.max = max;
}
在将来的某个时候,我希望看到C#获得在属性中声明支持字段的能力,这样它只对属性是私有的:
public string Name
{
string name;
get { return name; }
set
{
if (value == null)
{
throw new ArgumentNullException("value");
}
name = value;
}
}
在属性之外,您根本无法获得name
,只有Name
。对于自动实现的属性,我们已经有了它,但是它们不能包含任何逻辑。
发布于 2008-12-10 03:46:08
我会说
Name = "Johnny"
原因是我可能有一些验证(或者触发,或者延迟初始化,或者.),或者以后可能决定在分配名称时插入一些验证,并且我希望一定要触发该代码。
发布于 2008-12-10 03:44:19
我更喜欢:
Name = "Johny"
对我来说,原因很简单,如果_Name发生了一些不好的事情,您总是可以将一些输出放在getter/setter中,并找出是什么导致了问题。
https://stackoverflow.com/questions/355787
复制相似问题