当“new”有意义时,我遇到的示例涉及子类继承自库中的基类的维护情况,并且新版本的库添加了一个与一个名称相同的方法已在子类中实现。 (见:Brittle Base Classes)
我想知道的是,是否存在使用“新”是一个很好的设计选择(而不是维护中可能需要的东西)的情况。使用覆盖无法完成的一件事是更改方法/属性的返回类型,同时保持名称相同,但我怀疑它是否是一个好的设计选择。
public class FruitBasket {
public int Weight { get; set;}
public List<Fruit> Fruits {get; set;}
}
public class AppleBasket : FruitBasket {
public new List<Apple> Fruits {get; set;}
}
答案 0 :(得分:0)
我知道的一种情况是,如果要数据绑定到从另一个接口继承的接口,并且想要绑定到基接口中的成员,则必须在.Net WinForms中使用new。
例如,如果你有
public interface IOne
{
int ID {get;set;}
string Code {get;set;}
}
public interface ITwo : IOne
{
DateTime CreatedDate {get;set;}
}
并且您将控件数据绑定到ITwo对象,然后除非将它们添加到ITwo界面,否则您将无法看到ID或代码属性。当然,您不必使用新的,但建议使用。
除此之外,我只在维护模式下使用它,即一旦应用程序发货,新的要求需要进行此类更改。
HTH, 迪安。
答案 1 :(得分:-1)
我认为MSDN参考显示new
关键字的合理位置:
(MSDN reference: new Modifier)。例如,使用嵌套类的情况。