gpt4 book ai didi

c# - 抽象类中的无主体抽象方法有什么问题?

转载 作者:太空狗 更新时间:2023-10-30 01:34:08 24 4
gpt4 key购买 nike

我正在重构一个预先存在的解决方案。我使用 ReSharper,我注意到代码检查规则被触发。有一个抽象类具有无主体方法签名,目的是强制派生类(其中有几个)。据我所知,这是(或至少是)正确的做事方式。然而,ReSharper 提示说“永远不会通过基类型访问类型成员”并且“只使用 [方法] 的重写。”以下是复制相关问题的示例代码:

public abstract class MyAbstractClass
{
public abstract void CreateSomething();
public abstract void ReadSomething();
public abstract void InsertSomething();
}

public class MyDerivedClass : MyAbstractClass
{

public override void CreateSomething()
{
throw new NotImplementedException();
}

public override void ReadSomething()
{
throw new NotImplementedException();
}

public override void InsertSomething()
{
throw new NotImplementedException();
}
}

顺便说一句,还有其他成员排除了将抽象类作为接口(interface)的可能性。 ReSharper 建议对抽象类中的 3 个方法进行更改。它的建议是使它们成为 protected 、虚拟的、非抽象的,或者简单地将它们从抽象类中删除,只在派生类中使用。最初编写此代码的人旨在让每个派生类实现这些方法,并让这些方法在派生类中公开。那么,有什么方法可以改变它以使其更有效吗?如果不是,为什么 ReSharper 对此提出异议?

最佳答案

因为您永远不会使用 MyAbstractClass 类型的引用来访问该方法,所以将它设为抽象成员是没有意义的——您可以将它完全排除在基类之外,一切都会正常编译。

关于c# - 抽象类中的无主体抽象方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797880/

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