为什么我可以在C#的Interface中编写方法定义且编译通过?
问题解答
你遇到的情况是C# 8.0新增的默认接口方法特性,属于官方正式支持的语法,不是异常情况。
特性说明
- C# 8.0及更高版本支持在接口中为方法编写默认实现,所有基于.NET Core 3.0、.NET 5+的运行环境都原生支持该语法,你使用的.NET 5完全符合版本要求。
- 补充纠正一个表述偏差:不存在
.Net Framework 5.0这个版本,微软官方的.NET Framework最高版本为4.8,.NET 5是原.NET Core系列的后续统一版本,属于跨平台的.NET平台分支。 - 该特性的设计目的是解决接口迭代的兼容性问题:如果需要给已经上线、被多个类实现的接口新增方法,添加默认实现后原有实现类不需要做任何修改即可正常编译运行,不会出现破坏性变更。
示例代码
public interface IDemo { // 带默认实现的接口方法 void OutputInfo() { Console.WriteLine("这是接口的默认实现"); } } // 实现类不需要强制重写新增的接口方法 public class DemoClass : IDemo { } // 调用方式 IDemo demo = new DemoClass(); demo.OutputInfo(); // 正常输出:这是接口的默认实现
内容的提问来源于stack exchange,提问作者Rahul Ahirwal
相关产品推荐
相关产品推荐

