【发布时间】:2020-03-25 08:05:06
【问题描述】:
C# 版本 8 中添加了一个选项。到那时,抽象类和接口之间会有什么区别,为什么我还要再使用抽象类?这个版本的这个改动有什么好处?
【问题讨论】:
-
这正是我不喜欢该功能的原因。它们是 not 实现,与“常规”实现具有相同的意义——它们是 默认 实现。它们有一个特殊用途:您可以将它们添加到一个现有接口,从而在不破坏遗留代码的情况下添加功能。它令人困惑,它鼓励肮脏的编码。我不喜欢:(
-
我不认为这是脏代码,我们以前在抽象类的版本中就有它,所以它很有用,但我的问题是这个新功能的优势是什么?
-
我没说它是脏的。我说它鼓励脏编码。具体来说:让应该很难做的事情变得容易。我已经讨论了这个功能的好处。如果您想深入那个兔子洞并找到更多有效的应用程序:devblogs.microsoft.com/dotnet/…、docs.microsoft.com/en-us/dotnet/csharp/tutorials/…、docs.microsoft.com/en-us/dotnet/csharp/tutorials/…
-
主要区别在于抽象类可以有状态,接口不能。
标签: c# .net-core-3.0 c#-8.0 .net-core-3.1