最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#獲取當(dāng)前成員函數(shù)的函數(shù)名的幾種常用方法

 更新時間:2026年02月25日 09:20:47   作者:Yashar Qian  
本文介紹了在C#中獲取當(dāng)前成員函數(shù)名稱的幾種方法,包括反射、nameof、CallerMemberName、StackTrace和表達(dá)式樹,并給出了最佳實(shí)踐推薦,需要的朋友可以參考下

C# 如何獲取當(dāng)前成員函數(shù)的函數(shù)名

在 C# 中獲取當(dāng)前成員函數(shù)的名稱,有以下幾種常用方法:

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

using System.Reflection;

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

特點(diǎn)

  • 適用于任何方法(靜態(tài)/實(shí)例)。
  • 有輕微性能開銷(反射調(diào)用)。
  • 可以獲取完整的方法信息(如參數(shù)、返回類型等)。

2. 使用nameof(C# 6.0+)

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

特點(diǎn)

  • 編譯時確定,無運(yùn)行時開銷。
  • 需要硬編碼方法名(如果方法名更改,會自動同步)。

3. 使用CallerMemberName(適用于屬性/事件)

using System.Runtime.CompilerServices;

public void MyMethod()
{
    LogMethodName();
}

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

特點(diǎn)

  • 適用于屬性 get/set、事件 add/remove 等場景。
  • 不能直接用于普通方法(需通過輔助方法)。

4. 使用StackTrace(獲取調(diào)用棧信息)

using System.Diagnostics;

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

特點(diǎn)

  • 性能較差,適合調(diào)試或日志場景。
  • 可獲取調(diào)用鏈上的所有方法名。

5. 表達(dá)式樹(高級用法,動態(tài)獲?。?/h3>
using System.Linq.Expressions;

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

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

特點(diǎn)

  • 靈活但復(fù)雜,適合高階場景。

最佳實(shí)踐推薦

  • 普通方法:優(yōu)先用 nameof(無性能開銷)。
  • 需要動態(tài)獲取時:用 MethodBase.GetCurrentMethod()。
  • 屬性/事件:用 CallerMemberName

示例代碼

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

根據(jù)你的需求選擇最合適的方式!

到此這篇關(guān)于C#獲取當(dāng)前成員函數(shù)的函數(shù)名的幾種常用方法的文章就介紹到這了,更多相關(guān)C#獲取當(dāng)前成員函數(shù)函數(shù)名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#關(guān)于Textbox滾動顯示最后一行,不閃爍問題

    C#關(guān)于Textbox滾動顯示最后一行,不閃爍問題

    這篇文章主要介紹了C#關(guān)于Textbox滾動顯示最后一行,不閃爍問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • WPF應(yīng)用啟動慢的問題解決

    WPF應(yīng)用啟動慢的問題解決

    今天碰到一個奇怪的現(xiàn)象,在某些機(jī)器上,進(jìn)行了系統(tǒng)還原后,WPF應(yīng)用打開較慢,約有35s。本文先記錄下該問題的解決方案,應(yīng)用啟動性能官方文檔中有說明,還有搜到的其它方案沒來得及測試,如NGEN update
    2021-05-05
  • WPF中窗體最大化問題的解決方法

    WPF中窗體最大化問題的解決方法

    這篇文章主要給大家介紹了關(guān)于WPF中窗體最大化問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用wpf具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • C#中判斷一個集合是否是另一個集合的子集的簡單方法

    C#中判斷一個集合是否是另一個集合的子集的簡單方法

    本文介紹利用C#中內(nèi)置的系統(tǒng)函數(shù)判斷一個集合是否是一個集合的子集的方法,此方法代碼量極少,分享給大家。
    2016-04-04
  • c#中 String和string的區(qū)別介紹

    c#中 String和string的區(qū)別介紹

    String和string的區(qū)別有哪些,想有很多朋友都不知道吧,在本文將為大家詳細(xì)介紹下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-10-10
  • C#實(shí)現(xiàn)控制攝像頭的類

    C#實(shí)現(xiàn)控制攝像頭的類

    這篇文章主要介紹了C#實(shí)現(xiàn)控制攝像頭的類,涉及C#操作攝像頭的初始化、抓圖、錄像等功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實(shí)現(xiàn)將RTF文檔高效轉(zhuǎn)換為PDF格式的兩種方法詳解

    C#實(shí)現(xiàn)將RTF文檔高效轉(zhuǎn)換為PDF格式的兩種方法詳解

    在現(xiàn)代辦公自動化和文檔處理場景中,經(jīng)常需要將不同格式的文檔統(tǒng)一轉(zhuǎn)換為?PDF?格式,本文將詳細(xì)介紹如何使用?C#?實(shí)現(xiàn)從?RTF?到?PDF?的轉(zhuǎn)換,并提供兩種主流方案,希望對大家有所幫助
    2026-03-03
  • C# SESSION丟失問題的解決辦法

    C# SESSION丟失問題的解決辦法

    這篇文章主要為大家詳細(xì)介紹了C# SESSION丟失問題的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#統(tǒng)計字符串的方法

    C#統(tǒng)計字符串的方法

    這篇文章主要為大家詳細(xì)介紹了C#統(tǒng)計字符串的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 使用C#壓縮PNG、JPEG和TIFF圖像的方法

    使用C#壓縮PNG、JPEG和TIFF圖像的方法

    圖像壓縮是一種常用的減小圖像大小的方法,它可以讓您分別最小化存儲和傳輸圖像所需的空間和時間,有各種壓縮技術(shù)可用來壓縮圖像,而不會降低圖像的質(zhì)量,根據(jù)這一點(diǎn),這篇文章為您提供了一些使用 C# 以編程方式壓縮PNG、JPEG和TIFF圖像的簡單方法
    2024-12-12

最新評論

淮北市| 南汇区| 巴马| 三门峡市| 辽阳市| 铁力市| 柘城县| 竹山县| 普兰店市| 睢宁县| 建平县| 大渡口区| 宜兰市| 公主岭市| 娄烦县| 华亭县| 永寿县| 乌拉特中旗| 杭州市| 襄樊市| 长春市| 高青县| 宜君县| 木兰县| 郸城县| 茂名市| 苏尼特右旗| 巩留县| 新民市| 合肥市| 漳平市| 安阳市| 长垣县| 石门县| 沙坪坝区| 新源县| 竹北市| 新和县| 古田县| 开原市| 武强县|