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

C#中直接通过类调用父类方法是否可行?

问题解答

这种写法完全可行,你没搞懂的点是C#里的静态方法(Static Method)。

先给你掰明白两种方法的核心区别:

  • 实例方法:就是你之前熟悉的那种,必须先new出类的实例,再通过实例调用。这类方法一般和具体实例的状态绑定,比如要修改某个Book实例的标题,就得用实例方法。
  • 静态方法:属于类本身,不属于任何单个实例,所以直接用类名.方法名()就能调用。这类方法通常是通用工具类,或者不需要依赖实例属性就能完成的操作——比如你例子里的Find方法,它只需要一个ID参数就能去数据源里查对应对象,根本不需要依赖某个具体的Book实例。

拿你的代码举例,Book.Find的定义肯定带了static关键字,大概长这样:

public class Book
{
    public string Title { get; set; }
    public int Id { get; set; }

    // 静态方法:用static修饰
    public static Book Find(int bookId)
    {
        // 这里写根据ID查询数据的逻辑,比如查数据库
        return /* 查询到的Book对象 */;
    }
}

要是换成你之前理解的实例方法,写法就不一样了,得去掉static,调用时也得用实例:

public class Book
{
    public string Title { get; set; }
    public int Id { get; set; }

    // 实例方法:没有static修饰
    public Book Find()
    {
        // 比如基于当前实例的ID去查询
        return /* 查询到的同ID的Book对象 */;
    }
}

// 调用方式就得是:
var savedBook = harryPotterBook.Find();

简单总结:静态方法是“类的方法”,实例方法是“对象的方法”,区分的关键看方法是否需要依赖实例的状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:13