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

C#中如何获取调用指定方法的对象所属的类名

结论

该需求完全可以实现,无需在所有派生类中重复编写类名打印逻辑,仅在基类MainClass的MainMethod方法中添加少量代码即可达成效果。

实现原理

所有支持多态的面向对象编程语言,都提供了运行时获取实例真实类型的内置能力:当你通过基类引用指向派生类实例时,通过实例自身携带的运行时类型标识,就能准确拿到它实际所属的类,不会因为方法定义在基类就误判为基类类型。

代码示例(以C#为例)

直接在MainMethod中通过this.GetType()获取实例的运行时类型,再读取类型的Name属性即可拿到类名:

public class MainClass
{
    public void MainMethod()
    {
        string realClassName = this.GetType().Name;
        Console.WriteLine($"调用当前方法的实例实际所属类:{realClassName}");
    }
}

// 测试用派生类
public class ChildClass1 : MainClass { }
public class ChildClass2 : MainClass { }

/*
运行测试:
MainClass ins1 = new ChildClass1();
ins1.MainMethod(); // 输出:调用当前方法的实例实际所属类:ChildClass1
MainClass ins2 = new ChildClass2();
ins2.MainMethod(); // 输出:调用当前方法的实例实际所属类:ChildClass2
*/
注意事项
  • Java环境下将this.GetType().Name替换为this.getClass().getSimpleName()即可,实现逻辑完全一致
  • 不要使用编译期绑定的类型获取写法(比如C#的typeof(MainClass)、Java的MainClass.class),这类写法永远只能拿到基类类型,无法识别派生类实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:15:53