欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、需求

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

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

這個是常用的功能,如下圖,熟悉的可以直接跳過,假設(shè)當(dāng)前類有一個全局變量和當(dāng)前方法中的參數(shù)名一模一樣的時候,Visual Studio 就會提示異常,因?yàn)橄到y(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() 就會輸出:厚禮蟹

四、作為索引器

作為索引器,在平時的項(xiàng)目中用的并不多,但在微軟給我們封裝好的方法中,用的特別多,我們常用的數(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ù)

在實(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

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

擴(kuò)展方法的核心三要素是靜態(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 的擴(kuò)展方法:" + s);
        }

        public static void TestInt(this int t)
        {
            Console.WriteLine("這是 int 的擴(kuò)展方法:" + 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);
        }
    }
}

運(yùn)行:

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

結(jié)束

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

相關(guān)文章

  • C#加密知識整合 (AES,MD5,RSA,SHA256)

    C#加密知識整合 (AES,MD5,RSA,SHA256)

    這篇文章主要介紹了c#對于加密的一點(diǎn)整合 (AES,MD5,RSA,SHA256),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析

    深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析

    本篇文章是對DropDownList的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#實(shí)現(xiàn)Xml序列化與反序列化的方法

    C#實(shí)現(xiàn)Xml序列化與反序列化的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Xml序列化與反序列化的方法,將序列化與反序列化的方法封裝入一個類文件中,包含了較為詳盡的注釋說明,非常具有實(shí)用價值,需要的朋友可以參考下
    2014-12-12
  • C#從文件流讀取xml文件到DataSet并顯示的方法

    C#從文件流讀取xml文件到DataSet并顯示的方法

    這篇文章主要介紹了C#從文件流讀取xml文件到DataSet并顯示的方法,實(shí)例分析了C#操作XML文件的技巧與DataSet的使用方法,需要的朋友可以參考下
    2015-04-04
  • C#中遍歷DataSet數(shù)據(jù)集對象實(shí)例

    C#中遍歷DataSet數(shù)據(jù)集對象實(shí)例

    這篇文章主要介紹了C#中遍歷DataSet數(shù)據(jù)集對象實(shí)例,經(jīng)常忘記如何操作DataSet,這里記下來并分享,讓需要的朋友可以參考下
    2014-08-08
  • C# 對象映射的高性能方案

    C# 對象映射的高性能方案

    這篇文章主要介紹了C# 對象映射的高性能方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,有需要的朋友可以借鑒參考下
    2020-12-12
  • C# ref and out的使用小結(jié)

    C# ref and out的使用小結(jié)

    這篇文章主要介紹了C# ref and out的使用小結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C# 調(diào)用exe傳參,并獲取打印值的實(shí)例

    C# 調(diào)用exe傳參,并獲取打印值的實(shí)例

    這篇文章主要介紹了C# 調(diào)用exe傳參,并獲取打印值的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 使用C#實(shí)現(xiàn)設(shè)置 Excel單元格格式的示例詳解

    使用C#實(shí)現(xiàn)設(shè)置 Excel單元格格式的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何通過使用C#在同一個工作表中設(shè)置 字體、背景顏色、行高列寬、邊框和單元格合并,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下
    2025-09-09
  • C#實(shí)現(xiàn)線性查找算法

    C#實(shí)現(xiàn)線性查找算法

    這篇文章介紹了C#實(shí)現(xiàn)線性查找的算法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論