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

C#中this的五種用法小結(jié)

 更新時間:2025年11月07日 10:19:10   作者:熊思宇  
本文主要介紹了C#中this的五種用法小結(jié),包括區(qū)分當(dāng)前類的對象、作為參數(shù)傳遞、作為索引器、調(diào)用其他的構(gòu)造函數(shù)、擴展靜態(tài)類方法等,感興趣的可以了解一下

一、需求

一般來說,this 僅僅局限于對象內(nèi)部,對象外部是無法看到的,這就是this的基本思想,在我們的項目開發(fā)中,this關(guān)鍵字用的并不多,這也導(dǎo)致有些程序員對它的認(rèn)識就不充足,有些知識點就會錯過,this的功能絕對不是網(wǎng)上一些課程講的那樣,只是用來區(qū)分全局變量和局部變量,下面我就介紹 this 的幾種用法,必定能讓你對這個關(guān)鍵字有一個全新的認(rèn)識。

二、區(qū)分當(dāng)前類的對象

這個是常用的功能,如下圖,熟悉的可以直接跳過,假設(shè)當(dāng)前類有一個全局變量和當(dāng)前方法中的參數(shù)名一模一樣的時候,Visual Studio 就會提示異常,因為系統(tǒng)不知道你到底要給誰賦值,按 C# 的編程規(guī)范來說,全局變量最好第一個字母用大寫,當(dāng)然你也可以用小寫,在遇到下面的這種情況時,只要前面加一個 this,系統(tǒng)就知道左邊的 name 是當(dāng)前類的成員,而右邊的 name 則是方法的參數(shù)。

這時的 this 我們看到是一個正常的藍(lán)色,如果不需要用到 this 關(guān)鍵字,那么 this 字體則是灰色的。

三、作為參數(shù)傳遞

如果其他類的參數(shù)類型和當(dāng)前類一致,直接寫 this 即可

    public class Test1
    {
        public void MyTest(Test2 test2)
        {
            Console.WriteLine(test2.Name);
        }
    }

    public class Test2
    {
        public string Name = "厚禮蟹";
        public void MyTest()
        {
            new Test1().MyTest(this);
        }
    }

調(diào)用 Test2.MyTest() 就會輸出:厚禮蟹

四、作為索引器

作為索引器,在平時的項目中用的并不多,但在微軟給我們封裝好的方法中,用的特別多,我們常用的數(shù)組,List 等,基本都是使用索引器去讀取的。

namespace 計算3
{
    public class Program
    {
        static void Main(string[] args)
        {
            Test1 test1 = new Test1();
            Console.WriteLine(test1[1]);

            Console.ReadKey();
        }
    }

    public class Test1
    {
        string[] NameList = new string[3] { "張三", "李四", "王五" };
        public string this[int index]
        {
            get
            {
                if(index < 0 || index >= NameList.Length)
                {
                    Console.WriteLine("index 的值超過了數(shù)組的范圍");
                    return null;
                }
                return NameList[index];
            }
        }
    }
}

執(zhí)行后,會輸出:李四

五、調(diào)用其他的構(gòu)造函數(shù)

在實例化當(dāng)前的類的時候,不僅僅是調(diào)用一個構(gòu)造函數(shù),用 this 就可以調(diào)用其他的構(gòu)造函數(shù),甚至在調(diào)用的時候,還可以執(zhí)行其他的屬性,字段,調(diào)用其他的方法,這些都是沒問題的。

namespace 計算3
{
    public class Program
    {
        static void Main(string[] args)
        {
            Test1 test1 = new Test1("王五");
           
            Console.ReadKey();
        }
    }

    public class Test1
    {
        public static int GetAge
        {
            get => 4;
        }

        public Test1()
        {
        }

        public Test1(string name, int age)
        {
            Console.WriteLine("姓名:" + name);
            Console.WriteLine("年齡:" + age);
        }

        public Test1(string name) : this(name, GetAge)
        {
        }
    }
}

可以看到,這里的寫法和 base 關(guān)鍵字類似,不過 base 是調(diào)用父類的構(gòu)造函數(shù)。

執(zhí)行后輸出:

姓名:王五
年齡:4

六、擴展靜態(tài)類方法

擴展方法的核心三要素是靜態(tài)類,靜態(tài)方法,和this參數(shù)

既在靜態(tài)類中定義的靜態(tài)方法,該方法的第一個參數(shù)帶this

namespace 計算3
{
    public class Program
    {
        static void Main(string[] args)
        {
            string name = "233";
            name.TestString();
            int age = 3;
            age.TestInt();
           
            Console.ReadKey();
        }
    }

    public static class Espandi
    {
        public static void TestString(this string s)
        {
            Console.WriteLine("這是 string 的擴展方法:" + s);
        }

        public static void TestInt(this int t)
        {
            Console.WriteLine("這是 int 的擴展方法:" + t);
        }
    }
}

在上面的 TestString 方法中,參數(shù)前面加 this ,可以理解為 給 string 類 添加了一個 靜態(tài)方法 TestString,那么我們可以在其他的類中使用 string 類型變量直接調(diào)用這個方法了,而不需要使用 Espandi.TestString() 這種方式調(diào)用。

輸出

上面的效果并不是那么明顯,這個案例應(yīng)該清晰很多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string name = "老王";
            name.Test(5);

            Console.ReadKey();
        }
    }

    public static class lib
    {
        public static void Test(this string name, int age)
        {
            Console.WriteLine("name:{0}, age:{1}",name,age);
        }
    }
}

運行:

這個擴展方法,最大的好處就是調(diào)用的時候少寫一個參數(shù)吧,想不出其他的好處了

結(jié)束

到此這篇關(guān)于C#中this的五種用法小結(jié)的文章就介紹到這了,更多相關(guān)C# this用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#如何對Dictionary遍歷賦值

    C#如何對Dictionary遍歷賦值

    這篇文章主要介紹了C#如何對Dictionary遍歷賦值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用windows控制臺調(diào)試服務(wù)的方法

    使用windows控制臺調(diào)試服務(wù)的方法

    這篇文章主要介紹了使用windows控制臺調(diào)試服務(wù)的方法,需要的朋友可以參考下
    2014-02-02
  • C#計算程序執(zhí)行過程花費時間的方法

    C#計算程序執(zhí)行過程花費時間的方法

    這篇文章主要介紹了C#計算程序執(zhí)行過程花費時間的方法,涉及C#簡單的時間運算技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實現(xiàn)簡單的計算器功能

    C#實現(xiàn)簡單的計算器功能

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)簡單的計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 使用WPF實現(xiàn)窗口抖動動畫效果

    使用WPF實現(xiàn)窗口抖動動畫效果

    在用戶界面設(shè)計中,適當(dāng)?shù)膭赢嫹答伩梢蕴嵘脩趔w驗,尤其是在錯誤提示、操作失敗等場景下,窗口抖動作為一種常見且直觀的視覺反饋方式,常用于提醒用戶注意當(dāng)前狀態(tài),本文將詳細(xì)介紹如何使用 WPF 動畫機制 實現(xiàn)一個通用的 窗口抖動幫助類,需要的朋友可以參考下
    2025-05-05
  • C#利用ms office實現(xiàn)office轉(zhuǎn)pdf的示例代碼

    C#利用ms office實現(xiàn)office轉(zhuǎn)pdf的示例代碼

    這篇文章主要介紹了C#利用ms office實現(xiàn)office轉(zhuǎn)pdf的詳細(xì)方法,文中通過代碼示例和圖文講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    這篇文章主要給大家介紹了關(guān)于C#中Foreach循環(huán)遍歷本質(zhì)與枚舉器的相關(guān)資料,foreach循環(huán)用于列舉出集合中所有的元素,foreach語句中的表達式由關(guān)鍵字in隔開的兩個項組成,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • C#搜索TreeView子節(jié)點,保留父節(jié)點的方法

    C#搜索TreeView子節(jié)點,保留父節(jié)點的方法

    這篇文章主要介紹了C#搜索TreeView子節(jié)點,保留父節(jié)點的方法,實例分析了C#操作TreeView節(jié)點的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • winform去掉右上角關(guān)閉按鈕的方法

    winform去掉右上角關(guān)閉按鈕的方法

    這篇文章主要介紹了winform去掉右上角關(guān)閉按鈕的方法,需要的朋友可以參考下
    2014-02-02
  • c# WPF中CheckBox樣式的使用總結(jié)

    c# WPF中CheckBox樣式的使用總結(jié)

    這篇文章主要介紹了c# WPF中CheckBox樣式的使用總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評論

丰镇市| 若尔盖县| 石家庄市| 保德县| 永德县| 巴彦县| 洛宁县| 隆子县| 焉耆| 南阳市| 剑川县| 达孜县| 民和| 额尔古纳市| 北票市| 仪征市| 鄂伦春自治旗| 壶关县| 东乡族自治县| 随州市| 开封市| 福安市| 左权县| 瓮安县| 湘潭县| 湖口县| 乡宁县| 延安市| 崇明县| 江华| 晴隆县| 泰来县| 石阡县| 车险| 遵义县| 运城市| 寿光市| 安顺市| 英超| 全椒县| 四川省|