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

C#中this的用法集錦

 更新時間:2015年06月04日 09:14:28   投稿:hebedich  
本文給大家匯總介紹了C#中的幾種this用法,相信大家應(yīng)該有用過,但你用過幾種?以下是個人總結(jié)的this幾種用法,歡迎大家拍磚,廢話少說,直接列出用法及相關(guān)代碼。

this 關(guān)鍵字引用類的當(dāng)前實例,還可用作擴展方法的第一個參數(shù)的修飾符。下面就針對this的四種用法,做簡單的總結(jié)。

首先,我們分別創(chuàng)建User和VIP兩個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>
    /// 編號
    /// </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>
  /// 會員
  /// </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】種用法,通過this()調(diào)用無參構(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("嗨,大家好!我的編號是{0},大家可以叫我{1}!", user.ID, user.UserName));
    }
 
  }
 
  /// <summary>
  /// 靜態(tài)類,來擴展User類
  /// </summary>
  public static class Helper
  {
 
    /// <summary>
    /// 第【4】種用法: this擴展User類
    /// </summary>
    /// <param name="user"></param>
    public static void Sing(this User user)
    {
      Console.WriteLine(string.Format("嗨,大家好!我的編號是{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】種用法,通過this()調(diào)用無參構(gòu)造函數(shù)

/// <summary>
/// this第【3】種用法,通過this()調(diào)用無參構(gòu)造函數(shù)
/// </summary>
/// <param name="UserName"></param>
public VIP(string UserName)
  : this()
{
  this.UserName = UserName;
}

this第【4】種用法:擴展User類

/// <summary>
/// 靜態(tài)類,來擴展User類
/// </summary>
public static class Helper
{
 
  /// <summary>
  /// 第【4】種用法: this擴展User類
  /// </summary>
  /// <param name="user"></param>
  public static void Sing(this User user)
  {
    Console.WriteLine(string.Format("嗨,大家好!我的編號是{0},大家可以叫我{1}!", user.ID, user.UserName));
  }
}

最后,控制臺測試

/// <summary>
/// 主程序入口
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
 
  //0>聲明實體
  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擴展VIP類 public static Sing(this User user){……}
  Console.WriteLine("第【四】種用法: this擴展VIP類");
  user.Sing();
 
 
  Console.Read();
 
}

最終結(jié)果示意圖

以上所述上就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • C#.NET實現(xiàn)網(wǎng)頁自動登錄的方法

    C#.NET實現(xiàn)網(wǎng)頁自動登錄的方法

    這篇文章主要介紹了C#.NET實現(xiàn)網(wǎng)頁自動登錄的方法,以實例形式分析了C#實現(xiàn)點擊自動登錄的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實現(xiàn)單例模式的6種方法小結(jié)

    C#實現(xiàn)單例模式的6種方法小結(jié)

    這篇文章主要介紹了C#實現(xiàn)單例模式的6種方法,C#中實現(xiàn)單例有很多種方法,本文將按順序介紹非線程安全、完全懶漢式、線程安全和低/高性能集中版本,需要的朋友可以參考下
    2022-09-09
  • 基于C#實現(xiàn)文件偽裝技術(shù)

    基于C#實現(xiàn)文件偽裝技術(shù)

    這篇文章主要為大家詳細介紹了如何基于C#實現(xiàn)文件偽裝功能,將一般文件夾偽裝成計算機,控制面板,打印機等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • WPF模擬實現(xiàn)Gitee泡泡菜單的示例代碼

    WPF模擬實現(xiàn)Gitee泡泡菜單的示例代碼

    這篇文章主要介紹了如何利用WPF模擬實現(xiàn)Gitee泡泡菜單,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-08-08
  • C#中String StringBuilder StringBuffer類的用法

    C#中String StringBuilder StringBuffer類的用法

    這篇文章給大家簡單介紹下C#中String StringBuilder StringBuffer三個類的用法,需要的的朋友參考下吧
    2017-05-05
  • C#的靜態(tài)工廠方法與構(gòu)造函數(shù)相比有哪些優(yōu)缺點

    C#的靜態(tài)工廠方法與構(gòu)造函數(shù)相比有哪些優(yōu)缺點

    這篇文章主要介紹了C#的靜態(tài)工廠方法與構(gòu)造函數(shù)對比的優(yōu)缺點,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#實現(xiàn)文件Move和Copy操作

    C#實現(xiàn)文件Move和Copy操作

    這篇文章介紹了C#實現(xiàn)文件Move和Copy操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#中的屬性解析(get、set、value)

    C#中的屬性解析(get、set、value)

    這篇文章主要介紹了C#中的屬性(get、set、value),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • C# 6.0 新特性匯總

    C# 6.0 新特性匯總

    這篇文章主要介紹了C# 6.0 新特性匯總的相關(guān)資料,本文給大家?guī)砹?1種新特征,非常不錯,感興趣的朋友一起看看吧
    2016-09-09
  • WPF實現(xiàn)窗體亞克力效果的示例代碼

    WPF實現(xiàn)窗體亞克力效果的示例代碼

    這篇文章主要為大家詳細介紹了如何利用WPF實現(xiàn)窗體亞克力效果,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-10-10

最新評論