C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#获取当前成员函数函数名

C#获取当前成员函数的函数名的几种常用方法

作者:Yashar Qian

本文介绍了在C#中获取当前成员函数名称的几种方法,包括反射、nameof、CallerMemberName、StackTrace和表达式树,并给出了最佳实践推荐,需要的朋友可以参考下

C# 如何获取当前成员函数的函数名

在 C# 中获取当前成员函数的名称,有以下几种常用方法:

1. 使用MethodBase.GetCurrentMethod()(反射)

using System.Reflection;

public void MyMethod()
{
    string methodName = MethodBase.GetCurrentMethod().Name;
    Console.WriteLine(methodName); // 输出 "MyMethod"
}

特点

2. 使用nameof(C# 6.0+)

public void MyMethod()
{
    Console.WriteLine(nameof(MyMethod)); // 输出 "MyMethod"
}

特点

3. 使用CallerMemberName(适用于属性/事件)

using System.Runtime.CompilerServices;

public void MyMethod()
{
    LogMethodName();
}

private void LogMethodName([CallerMemberName] string methodName = null)
{
    Console.WriteLine(methodName); // 输出 "MyMethod"
}

特点

4. 使用StackTrace(获取调用栈信息)

using System.Diagnostics;

public void MyMethod()
{
    var stackTrace = new StackTrace();
    var methodName = stackTrace.GetFrame(0).GetMethod().Name;
    Console.WriteLine(methodName); // 输出 "MyMethod"
}

特点

5. 表达式树(高级用法,动态获取)

using System.Linq.Expressions;

public void MyMethod()
{
    Console.WriteLine(GetMethodName(() => MyMethod()));
}

private string GetMethodName(Expression<Action> expression)
{
    return ((MethodCallExpression)expression.Body).Method.Name;
}

特点

最佳实践推荐

示例代码

using System;
using System.Reflection;

class Program
{
    static void Main()
    {
        var demo = new Demo();
        demo.ShowMethodName();
    }
}

class Demo
{
    public void ShowMethodName()
    {
        // 方法1: nameof
        Console.WriteLine("nameof: " + nameof(ShowMethodName));

        // 方法2: 反射
        Console.WriteLine("Reflection: " + MethodBase.GetCurrentMethod().Name);
    }
}

输出

nameof: ShowMethodName
Reflection: ShowMethodName

根据你的需求选择最合适的方式!

到此这篇关于C#获取当前成员函数的函数名的几种常用方法的文章就介绍到这了,更多相关C#获取当前成员函数函数名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文