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

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

 更新時(shí)間:2026年02月25日 09:20:47   作者:Yashar Qian  
本文介紹了在C#中獲取當(dāng)前成員函數(shù)名稱的幾種方法,包括反射、nameof、CallerMemberName、StackTrace和表達(dá)式樹(shù),并給出了最佳實(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í)例)。
  • 有輕微性能開(kāi)銷(反射調(diào)用)。
  • 可以獲取完整的方法信息(如參數(shù)、返回類型等)。

2. 使用nameof(C# 6.0+)

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

特點(diǎn)

  • 編譯時(shí)確定,無(wú)運(yùn)行時(shí)開(kāi)銷。
  • 需要硬編碼方法名(如果方法名更改,會(huì)自動(dòng)同步)。

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 等場(chǎng)景。
  • 不能直接用于普通方法(需通過(guò)輔助方法)。

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)試或日志場(chǎng)景。
  • 可獲取調(diào)用鏈上的所有方法名。

5. 表達(dá)式樹(shù)(高級(jí)用法,動(dòng)態(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ù)雜,適合高階場(chǎng)景。

最佳實(shí)踐推薦

  • 普通方法:優(yōu)先用 nameof(無(wú)性能開(kāi)銷)。
  • 需要?jiǎng)討B(tài)獲取時(shí):用 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    WPF應(yīng)用啟動(dòng)慢的問(wèn)題解決

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

    WPF中窗體最大化問(wèn)題的解決方法

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

    C#中判斷一個(gè)集合是否是另一個(gè)集合的子集的簡(jiǎn)單方法

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

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

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

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

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

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

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

    C# SESSION丟失問(wèn)題的解決辦法

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

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

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

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

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

最新評(píng)論

蒙阴县| 邻水| 来安县| 和顺县| 卫辉市| 成都市| 台南市| 团风县| 花垣县| 林芝县| 乌兰察布市| 都安| 卢龙县| 遂川县| 宝清县| 荣昌县| 岚皋县| 克东县| 七台河市| 泉州市| 洞头县| 贵溪市| 桓台县| 乌什县| 阿坝县| 宁阳县| 娄烦县| 碌曲县| 红原县| 龙山县| 石景山区| 古交市| 南江县| 资溪县| 麟游县| 岳池县| 南京市| 利川市| 琼中| 江津市| 乌兰县|