首页 / 问答 / [C#/.NET]C#&.NET/.NET Core应用程序中如何获取当前类(实例)的名称呢?

[C#/.NET]C#&.NET/.NET Core应用程序中如何获取当前类(实例)的名称呢?

.NET C# 反射 .NET Core 2.5K 次浏览
0

在C#&.NET/.NET Core应用程序中,假如有个名为MyProgram的类,如何以将当前类MyProgram的类名以字符串(“MyProgram”)方式返回呢?

回复 [×]
提交评论
请输入评论内容

4 个回答

  • 0

    在C#&.NET/.NET Core等应用程序中,可以调用类实例的GetType()方法获得当前实例的Type类型,再通过Name属性即可获取到当前实例的类名的字符串,示例如下:

    using System;
    
    namespace ConsoleApp2
    {
        public class MyProgram
        {
            static void Main(string[] args)
            {
                var person = new Person();
                person.Hello();
                Console.ReadKey();
            }
        }
    
        public class Person
        {
            public void Hello()
            {
                Console.WriteLine($"Hello, Rector from {this.GetType().Name}!");
            }
        }
    }
    

    运行结果:

    Hello, Rector from Person!
    
    Rector的个人主页

    Rector

    2021-11-08 回答

    • 0

      C#&.NET/.NET Core应用程序中,还可通过typeof()操作符获取类的字符串名称,示例如下:

      var className = typeof(Person).Name;
      Console.WriteLine(className);
      
      Rector的个人主页

      Rector

      2021-11-08 回答

      • 0

        或者,在C#6中,通过nameof()操作符获取类的字符串名称,示例如下:

        var className = nameof(Person);
        Console.WriteLine(className);
        
        Rector的个人主页

        Rector

        2021-11-08 回答

        • 0

          如果你是在类的某个方法个获取当前类的字符串名称,还可以调用MethodBase.GetCurrentMethod().DeclaringType.Name来获取,示例如下:

          var className = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;
          Console.WriteLine(className);
          
          Rector的个人主页

          Rector

          2021-11-08 回答

          我来回答