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

C#成員函數(shù)獲取當(dāng)前所在類的名字的四種方法

 更新時間:2026年02月25日 09:24:40   作者:Yashar Qian  
文章介紹了在C#中獲取當(dāng)前類名的四種方法:使用this.GetType().Name、nameof(MyClass)、typeof(MyClass).Name和MethodBase.GetCurrentMethod().DeclaringType.Name,并比較了它們的適用場景、是否受繼承影響以及性能特點,需要的朋友可以參考下

C# 成員函數(shù)中如何拿到當(dāng)前所在類的名字?

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

1. 使用this.GetType()(推薦)

public class MyClass
{
    public void PrintClassName()
    {
        string className = this.GetType().Name;       // 類名(不含命名空間)
        string fullName = this.GetType().FullName;    // 完全限定名(含命名空間)
        
        Console.WriteLine(className);    // 輸出 "MyClass"
        Console.WriteLine(fullName);    // 輸出 "Namespace.MyClass"(如果有命名空間)
    }
}
  • 適用場景:適用于實例方法,能正確反映運行時類型(包括繼承的情況)。
  • 注意:如果子類繼承 MyClass,this.GetType().Name 會返回子類的名稱。

2. 使用nameof(編譯時確定)

public class MyClass
{
    public void PrintClassName()
    {
        string className = nameof(MyClass); // 編譯時替換為 "MyClass"
        Console.WriteLine(className);      // 輸出 "MyClass"
    }
}
  • 適用場景:適用于編譯時已知類名,不受繼承影響(即使子類調(diào)用,仍然返回 MyClass)。
  • 優(yōu)點:性能最佳(編譯時靜態(tài)解析)。

3. 使用typeof(MyClass)

public class MyClass
{
    public void PrintClassName()
    {
        string className = typeof(MyClass).Name;      // 類名(不含命名空間)
        string fullName = typeof(MyClass).FullName;   // 完全限定名(含命名空間)
        
        Console.WriteLine(className);    // 輸出 "MyClass"
        Console.WriteLine(fullName);    // 輸出 "Namespace.MyClass"
    }
}
  • 適用場景:適用于編譯時已知類名,不受實例影響(靜態(tài)方法也可用)。
  • 注意:和 nameof 類似,不受繼承影響。

4. 使用MethodBase.GetCurrentMethod()(反射方式,適用于靜態(tài)方法)

using System.Reflection;

public class MyClass
{
    public void PrintClassName()
    {
        string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
        Console.WriteLine(className);  // 輸出 "MyClass"
    }
}
  • 適用場景:適用于靜態(tài)方法或無法使用 this 的情況。
  • 缺點:性能較差(反射開銷)。

如何選擇?

方法適用場景是否受繼承影響性能
this.GetType().Name實例方法,需運行時類型?? 是(返回實際類型)一般
nameof(MyClass)編譯時已知類名? 否(固定類名)最佳
typeof(MyClass).Name編譯時已知類名? 否(固定類名)最佳
MethodBase(反射)靜態(tài)方法或無 this?? 是較差

示例:繼承情況下的區(qū)別

public class ParentClass
{
    public void PrintName()
    {
        Console.WriteLine(this.GetType().Name);  // 實際類型(可能是子類)
        Console.WriteLine(nameof(ParentClass));  // 固定 "ParentClass"
        Console.WriteLine(typeof(ParentClass).Name); // 固定 "ParentClass"
    }
}

public class ChildClass : ParentClass { }

// 測試
var child = new ChildClass();
child.PrintName();

輸出:

ChildClass   // this.GetType().Name
ParentClass  // nameof
ParentClass  // typeof

總結(jié)

  • 如果想獲取 運行時實際類型(包括繼承情況),用 this.GetType().Name。
  • 如果只需要 當(dāng)前類的編譯時名稱(不受繼承影響),用 nameof(MyClass)typeof(MyClass).Name。
  • 如果是在 靜態(tài)方法 里,可以用 MethodBase.GetCurrentMethod().DeclaringType.Nametypeof(MyClass).Name。

以上就是C#成員函數(shù)獲取當(dāng)前所在類的名字的四種方法的詳細(xì)內(nèi)容,更多關(guān)于C#成員函數(shù)獲取所在類的名字的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#獲取網(wǎng)頁源代碼的方法

    C#獲取網(wǎng)頁源代碼的方法

    這篇文章主要介紹了C#獲取網(wǎng)頁源代碼的方法,涉及C#基于自定義函數(shù)讀取網(wǎng)頁html代碼的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 詳解WPF如何在Panel中實現(xiàn)設(shè)置所有子項間距

    詳解WPF如何在Panel中實現(xiàn)設(shè)置所有子項間距

    這篇文章主要為大家詳細(xì)介紹了WPF如何在Panel中實現(xiàn)設(shè)置所有子項間距,本文借鑒了 Qt 中的 Spacing 設(shè)置方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • C#中可枚舉類型詳解

    C#中可枚舉類型詳解

    這篇文章主要介紹了C#中可枚舉類型,IEnumerable和IEnumerator接口j及其泛型實現(xiàn)和迭代器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#同步網(wǎng)絡(luò)時間的方法實例詳解

    C#同步網(wǎng)絡(luò)時間的方法實例詳解

    這篇文章主要介紹了C#同步網(wǎng)絡(luò)時間的方法,以實例形式較為詳細(xì)的分析了C#獲取網(wǎng)絡(luò)時間與同步本機系統(tǒng)時間的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • C#基于Spire.Doc for .NET從URL下載Word文檔的實現(xiàn)方案

    C#基于Spire.Doc for .NET從URL下載Word文檔的實現(xiàn)方案

    在日常的軟件開發(fā)中,我們經(jīng)常會遇到這樣的場景:需要從一個指定的 URL 地址下載文件,當(dāng)涉及到 Word 文檔這類復(fù)雜的二進制格式時,情況就變得不那么簡單了,本文將深入探討在 C# 應(yīng)用程序中,如何高效、可靠地從 URL 下載 Word 文檔,需要的朋友可以參考下
    2025-12-12
  • C# 利用代理爬蟲網(wǎng)頁的實現(xiàn)方法

    C# 利用代理爬蟲網(wǎng)頁的實現(xiàn)方法

    這篇文章主要介紹了C# 利用代理爬網(wǎng)頁的實現(xiàn)方法的相關(guān)資料,希望通過本能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • Winform之TextBox輸入日期格式驗證yyyy-mm-dd

    Winform之TextBox輸入日期格式驗證yyyy-mm-dd

    Winform之TextBox輸入日期格式驗證yyyy-mm-dd的實例與正則表達(dá)式,需要的朋友可以參考一下
    2013-02-02
  • C# WPF 父控件通過使用可視化樹找到子控件的示例代碼

    C# WPF 父控件通過使用可視化樹找到子控件的示例代碼

    這篇文章主要介紹了C# WPF 父控件通過使用可視化樹找到子控件的示例代碼,需要的朋友可以參考下
    2018-08-08
  • C#使用HttpClient進行Post請求出現(xiàn)超時問題的解決及優(yōu)化

    C#使用HttpClient進行Post請求出現(xiàn)超時問題的解決及優(yōu)化

    最近我的控制臺程序發(fā)現(xiàn)有時候總是出現(xiàn)請求超時等問題,通常好幾分鐘最多只有3-4個請求,在使用apipost發(fā)現(xiàn)并發(fā)10個5分鐘也沒有問題,那么問題就出在我的請求端了,所以本文給大家介紹了C# 使用HttpClient進行Post請求總是出現(xiàn)超時問題的優(yōu)化,需要的朋友可以參考下
    2025-01-01
  • c#值類型和引用類型使用示例

    c#值類型和引用類型使用示例

    這篇文章主要介紹了c#值類型和引用類型使用示例,需要的朋友可以參考下
    2014-04-04

最新評論

桃园县| 聂荣县| 呈贡县| 东丰县| 会泽县| 白水县| 新泰市| 宿松县| 秭归县| 常山县| 龙江县| 布拖县| 柘荣县| 海盐县| 米泉市| 宁津县| 万宁市| 马边| 洛川县| 象山县| 福海县| 女性| 全椒县| 福建省| 石阡县| 大埔区| 峨眉山市| 和政县| 高邑县| 山东| 宜良县| 湖州市| 赞皇县| 年辖:市辖区| 离岛区| 永胜县| 临朐县| 高邑县| 班戈县| 肇州县| 双流县|