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

C#中this的五種用法小結

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

一、需求

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

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

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

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

三、作為參數傳遞

如果其他類的參數類型和當前類一致,直接寫 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);
        }
    }

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

四、作為索引器

作為索引器,在平時的項目中用的并不多,但在微軟給我們封裝好的方法中,用的特別多,我們常用的數組,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 的值超過了數組的范圍");
                    return null;
                }
                return NameList[index];
            }
        }
    }
}

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

五、調用其他的構造函數

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

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 關鍵字類似,不過 base 是調用父類的構造函數。

執(zhí)行后輸出:

姓名:王五
年齡:4

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

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

既在靜態(tài)類中定義的靜態(tài)方法,該方法的第一個參數帶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 方法中,參數前面加 this ,可以理解為 給 string 類 添加了一個 靜態(tài)方法 TestString,那么我們可以在其他的類中使用 string 類型變量直接調用這個方法了,而不需要使用 Espandi.TestString() 這種方式調用。

輸出

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

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);
        }
    }
}

運行:

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

結束

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

相關文章

  • C#如何對Dictionary遍歷賦值

    C#如何對Dictionary遍歷賦值

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

    使用windows控制臺調試服務的方法

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

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

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

    C#實現簡單的計算器功能

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

    使用WPF實現窗口抖動動畫效果

    在用戶界面設計中,適當的動畫反饋可以提升用戶體驗,尤其是在錯誤提示、操作失敗等場景下,窗口抖動作為一種常見且直觀的視覺反饋方式,常用于提醒用戶注意當前狀態(tài),本文將詳細介紹如何使用 WPF 動畫機制 實現一個通用的 窗口抖動幫助類,需要的朋友可以參考下
    2025-05-05
  • C#利用ms office實現office轉pdf的示例代碼

    C#利用ms office實現office轉pdf的示例代碼

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

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

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

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

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

    winform去掉右上角關閉按鈕的方法

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

    c# WPF中CheckBox樣式的使用總結

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

最新評論

哈巴河县| 临清市| 南澳县| 洪湖市| 湘乡市| 义马市| 那曲县| 丰原市| 常山县| 彝良县| 浦江县| 永城市| 乐清市| 昭平县| 遵义县| 东兰县| 余庆县| 孟津县| 七台河市| 石家庄市| 锡林浩特市| 怀宁县| 泸水县| 华容县| 闻喜县| 彝良县| 冀州市| 都江堰市| 荆门市| 湟中县| 长春市| 泸州市| 淮北市| 西充县| 镇巴县| 静乐县| 靖安县| 凤冈县| 裕民县| 柳河县| 新巴尔虎左旗|