You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于C#中系统定义类非抽象方法无方法体的疑问

为什么System.Object的ToString()等方法无方法体但并非抽象?
  • 这些方法是用extern关键字标记的外部实现方法,意思是它们的代码逻辑不在C#层面的类定义里,而是由.NET的CLR(公共语言运行时)底层提供实现。比如你查看System.Object的源码,会看到ToString()的定义大概是这样:
    public virtual extern string ToString();
    
  • System.Object作为所有.NET类型的根类,它的核心方法(比如ToString()、GetHashCode())需要和运行时深度绑定,默认逻辑直接由CLR处理——比如ToString()默认返回类型的完整名称,这种基础逻辑没必要在C#代码里写方法体。
  • 这里的关键是extern和抽象方法的区别:抽象方法要求子类必须重写实现,而extern方法已经有了外部提供的实现,子类只是可以选择重写来替换默认逻辑,不是必须实现。

内容的提问来源于stack exchange,提问作者LiaPer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:20:23