【发布时间】:2018-02-09 20:17:13
【问题描述】:
大家好,请不要太苛刻。我是初学者。
什么是最佳实践以及以下 b/n 的区别是什么:
#1
public SodaDateTime DteRegistered
{
get { return DateTimeUtil.NullDateForMaxOrMinDate(this._dteRegistered); }
set
{
if (DateTimeUtil.IsNullDate(value))
{
this._dteRegistered = new SodaDateTime("DteRegistered", this, DateTime.Today);
}
else
{
this._dteRegistered = new SodaDateTime("DteRegistered", this, value);
}
}
}
VS.
#2
public SodaDateTime DteRegistered
{
get
{
if (DateTimeUtil.IsNullDate(this._dteRegistered))
{
_dteRegistered = new SodaDateTime("DteRegistered", this, DateTime.Today);
}
return this._dteRegistered;
}
set { _dteRegistered = new SodaDateTime("DteRegistered", this, value); }
}
【问题讨论】:
-
除了第一个调用
NullDateForMaxOrMinDate而第二个不调用这一事实之外,一个在setter 中进行验证,另一个在getter 中进行验证。您选择哪一个是一个见仁见智的问题(这就是我投票关闭的原因),尽管我更喜欢在 setter 中进行验证。这也是我会调用NullDateForMaxOrMinDate的地方(在设置私有支持字段之前)。 -
我同意关闭(意见请求)并更喜欢在 setter 中进行验证。我不会使用静默覆盖,而是使用异常作为对有故障的 SodaDateTIme 的反应。这是一个“不应被忽视”或默默修复的问题。 (codeproject.com/Articles/9538/…) 我也想知道整个设计:SodaDateTime 似乎是从 DateTime 派生的,并添加了 2 个字段 - 1 个字符串和对您分配的类的引用?这是怎么回事?
标签: c# properties getter-setter accessor read-write