gpt4 book ai didi

c# - 在控制基类时,是否存在应该使用 new 而不是 override 的情况?

转载 作者:太空狗 更新时间:2023-10-29 23:53:32 25 4
gpt4 key购买 nike

当"new"有意义时,我遇到的例子涉及子类继承自库中的基类的维护情况,并且库的新版本添加了一个与一个同名的方法已在子类中实现。 (参见:Brittle Base Classes)

我想知道的是,在某些情况下,使用"new"是一个不错的设计选择(而不是在维护中可能变得必要的东西)。 override 无法做到的一件事是在保持名称不变的同时更改方法/属性的返回类型,但我质疑它是否是一个好的设计选择。

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;}
}

最佳答案

我知道的一种情况是,如果要对从另一个接口(interface)继承的接口(interface)进行数据绑定(bind),并且要绑定(bind)到基本接口(interface)中的成员,则必须在 .Net WinForms 中使用 new。

例如,如果你有

public interface IOne
{
int ID {get;set;}
string Code {get;set;}
}

public interface ITwo : IOne
{
DateTime CreatedDate {get;set;}
}

并且您将控件数据绑定(bind)到 ITwo 对象,然后您将无法看到 ID 或代码属性,除非您将它们添加到 ITwo 界面。当然不一定非要用new,但是推荐。

除此之外,我只在维护模式下使用过它,即一旦应用程序发布并且新要求需要进行此类更改。

喂,院长。

关于c# - 在控制基类时,是否存在应该使用 new 而不是 override 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com