C#中this的用法集錦
this 關(guān)鍵字引用類的當(dāng)前實(shí)例,還可用作擴(kuò)展方法的第一個(gè)參數(shù)的修飾符。下面就針對(duì)this的四種用法,做簡(jiǎn)單的總結(jié)。
首先,我們分別創(chuàng)建User和VIP兩個(gè)C#類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppConsole
{
/// <summary>
/// 普通用戶
/// </summary>
public class User
{
/// <summary>
/// 全局變量
/// </summary>
Dictionary<string, object> dictInfo = null;
/// <summary>
/// 構(gòu)造器
/// </summary>
public User()
{
dictInfo = new Dictionary<string, object>();
}
/// <summary>
/// 構(gòu)造函數(shù)重載
/// </summary>
/// <param name="UserID"></param>
/// <param name="UserName"></param>
public User(int UserID, string UserName)
{
this.UserName = UserName;
this.ID = UserID;
}
/// <summary>
/// this,第【1】種用法,索引器
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object this[string name]
{
get { return dictInfo[name]; }
set { dictInfo[name] = value; }
}
/// <summary>
/// 編號(hào)
/// </summary>
public int ID { get; set; }
/// <summary>
/// 用戶名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// this第【2】種用法,當(dāng)做參數(shù)傳遞
/// </summary>
public void Said()
{
new VIP().Say(this);
}
}
/// <summary>
/// 會(huì)員
/// </summary>
public class VIP : User
{
/// <summary>
/// 積分
/// </summary>
public int integral { get; set; }
/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
public VIP()
{
ID = 520;
integral = 1000;
}
/// <summary>
/// this第【3】種用法,通過(guò)this()調(diào)用無(wú)參構(gòu)造函數(shù)
/// </summary>
/// <param name="UserName"></param>
public VIP(string UserName)
: this()
{
this.UserName = UserName;
}
/// <summary>
/// 構(gòu)造函數(shù)重載
/// </summary>
/// <param name="UserID"></param>
/// <param name="UserName"></param>
public VIP(int UserID, string UserName)
: base(UserID, UserName)
{
}
/// <summary>
///Say方法
/// </summary>
/// <param name="user"></param>
public void Say([LCQAttribute] User user)
{
Console.WriteLine(string.Format("嗨,大家好!我的編號(hào)是{0},大家可以叫我{1}!", user.ID, user.UserName));
}
}
/// <summary>
/// 靜態(tài)類,來(lái)擴(kuò)展User類
/// </summary>
public static class Helper
{
/// <summary>
/// 第【4】種用法: this擴(kuò)展User類
/// </summary>
/// <param name="user"></param>
public static void Sing(this User user)
{
Console.WriteLine(string.Format("嗨,大家好!我的編號(hào)是{0},大家可以叫我{1}!", user.ID, user.UserName));
}
}
/// <summary>
/// 特性類:指定特性僅適用于方法和方法的參數(shù)
/// </summary>
[System.AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)]
public class LCQAttribute : System.Attribute
{
}
}
this第【1】種用法,索引器
/// <summary>
/// 全局變量
/// </summary>
Dictionary<string, object> dictInfo = null;
/// <summary>
/// this,第【1】種用法,索引器
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object this[string name]
{
get { return dictInfo[name]; }
set { dictInfo[name] = value; }
}
this第【2】種用法,當(dāng)做參數(shù)傳遞
/// <summary>
/// this第【2】種用法,當(dāng)做參數(shù)傳遞
/// </summary>
public void Said()
{
new VIP().Say(this);
}
this第【3】種用法,通過(guò)this()調(diào)用無(wú)參構(gòu)造函數(shù)
/// <summary>
/// this第【3】種用法,通過(guò)this()調(diào)用無(wú)參構(gòu)造函數(shù)
/// </summary>
/// <param name="UserName"></param>
public VIP(string UserName)
: this()
{
this.UserName = UserName;
}
this第【4】種用法:擴(kuò)展User類
/// <summary>
/// 靜態(tài)類,來(lái)擴(kuò)展User類
/// </summary>
public static class Helper
{
/// <summary>
/// 第【4】種用法: this擴(kuò)展User類
/// </summary>
/// <param name="user"></param>
public static void Sing(this User user)
{
Console.WriteLine(string.Format("嗨,大家好!我的編號(hào)是{0},大家可以叫我{1}!", user.ID, user.UserName));
}
}
最后,控制臺(tái)測(cè)試
/// <summary>
/// 主程序入口
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//0>聲明實(shí)體
User user = new User();
user.ID = 1;
user.UserName = "lichaoqiang";
//第【一】種用法:this用作索引器 public object this[string name]{……}
user["UserID"] = 1;
Console.WriteLine("第【一】種用法:this用作索引器");
//第【二】種用法:this用作參數(shù)傳遞 user.Say(this);
Console.WriteLine("第【二】種用法:this用作參數(shù)傳遞");
user.Said();
//第【三】種用法:this() public VIP:this(){ }
VIP vip = new VIP("yezi");
vip.Said();
Console.WriteLine("第【三】種用法:this()");
//第【四】種用法: this擴(kuò)展VIP類 public static Sing(this User user){……}
Console.WriteLine("第【四】種用法: this擴(kuò)展VIP類");
user.Sing();
Console.Read();
}
最終結(jié)果示意圖

以上所述上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
c#生成excel示例sql數(shù)據(jù)庫(kù)導(dǎo)出excel
這篇文章主要介紹了c#操作excel的示例,里面的方法可以直接導(dǎo)出數(shù)據(jù)到excel,大家參考使用吧2014-01-01
C#實(shí)現(xiàn)簡(jiǎn)易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)
本文主要介紹了C#實(shí)現(xiàn)簡(jiǎn)易灰度圖和酷炫HeatMap熱力圖winform(附DEMO),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
C#使用委托(delegate)實(shí)現(xiàn)在兩個(gè)form之間傳遞數(shù)據(jù)的方法
這篇文章主要介紹了C#使用委托(delegate)實(shí)現(xiàn)在兩個(gè)form之間傳遞數(shù)據(jù)的方法,涉及C#委托的使用技巧,需要的朋友可以參考下2015-04-04

