【发布时间】:2021-09-22 08:15:26
【问题描述】:
我经常在公司发现这种代码...
class Base
{
public int Property
{
get; set;
}
}
class Derived : Base
{
public Derived()
{
base.Property = 0xAFFE;
}
}
而且,我经常认为这种对 base 的使用是“错误的”。
我认为,“this.Property”将是“正确的”(或简称为“Property = 0xAFFE;”)
我认为,可以重构(使 Property 虚拟化,覆盖它)。
但是,我的论点似乎没有说服力。你能帮忙争论吗?还是我(完全)错了?
谢谢。
【问题讨论】:
-
如果您想要基于“错误”或“正确”的答案,您可能会在softwareengineering.stackexchange.com 或codereview.stackexchange.com 找到更好的结果
-
对于 SO 来说可能过于基于意见,但至少您应该知道在构造函数中设置虚拟属性是有问题的:stackoverflow.com/questions/28382191/…
-
我的观点是基类大部分时间都是错误的。
-
使用 this & base 之间存在语义差异,所以我不认为这是一个自以为是的问题。
-
我真正发现错误的是没有使用基构造函数来设置基类的属性。他们可能正在使用 base.Property,因为您可以使用“new”关键字创建另一个具有相同名称的属性。