我可以在问题中提供的示例中删除属性设置器(没有任何问题)吗?
|
在我的项目的现有代码中,在许多地方,该属性的声明如下:
public long ResourceID
{
get
{
return this.resourceID;
}
set
{
if (this.resourceID != value)
{
this.resourceID = value;
}
}
}
注意:已经声明了“ 1”。
这样不仅声明值类型的属性,还声明引用类型(包括字符串)的属性。
另一个例子:
public Collection<Ability> Abilities
{
get
{
return this.abilities;
}
set
{
if (value == null)
{
throw new ArgumentNullException(\"Abilities\");
}
this.abilities = value;
}
}
据我所知,第一个示例中的setter没有任何意义,并且“ 3”条件在那里毫无意义。因此,我决定更改代码(作为重构的一部分),以使其具有自动属性。 (在第二个示例中,我需要使用setter,因为在那里处理了异常。)
我想从这里的专家那里知道,将现有属性设为自动属性(或至少从setter中删除3条件)是否会造成任何危害?有时,有些细微的东西是开发人员可能不知道的,并且某些更改也会产生副作用。这就是为什么我问这个问题。 (我的库在很多地方都使用过。)
注意:让我知道这是否纯粹是一个作业问题。
没有找到相关结果
已邀请:
6 个回复
babsoft
)报告的对象相等时突然交换了引用。不同的参考 第一个是更可能的问题。如果您使用的是
,请保留私有字段(然后再删除
测试)。然后从
开始重构代码; p
枫湃揩乾纲
变成:
不会造成任何伤害,保证。 删除if语句可能会造成伤害。例如,在WPF中,当使用MVVM模式并实现INotifyPropertyChanged接口时,通常最好的做法是在实际设置值之前检查该值是否已更改。删除此检查将引起通知发送到UI,无论值是否更改。因此,这将是一个巨大的变化。
旗低饶彤
庞协腿宛炯
枫湃揩乾纲
。假定该字段已初始化为非null值,并且具有此值,因为它意味着调用者无需检查ѭ18without就可以读取该属性。
暑袜眠退
要么
但这可能会导致问题 更改财产的价值, 它级联到其他风俗习惯 仅执行的函数调用 如果新值与 旧的。通常在实施自定义事件或什至发生属性更改事件时 使用时也可能会影响 数据上下文类 两种情况都是完全针对特定应用的。 我建议您谨慎对待反应堆。或者,正如您自己编写的那样,HOMEWORK。