您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

C#中this的用法集锦

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。

  this 关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符。下面就针对this的四种用法,做简单的总结。

  首先,我们分别创建User和VIP两个C#类

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 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> /// 构造器 /// </summary> public User() { dictInfo = new Dictionary<string, object>(); }   /// <summary> /// 构造函数重载 /// </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】种用法,当做参数传递 /// </summary> public void Said() { new VIP().Say(this); }   }   /// <summary> /// 会员 /// </summary> public class VIP : User {     /// <summary> /// 积分 /// </summary> public int integral { get; set; }   /// <summary> /// 构造函数 /// </summary> public VIP() { ID = 520; integral = 1000; }   /// <summary> /// this第【3】种用法,通过this()调用无参构造函数 /// </summary> /// <param name="UserName"></param> public VIP(string UserName) : this() { this.UserName = UserName; }   /// <summary> /// 构造函数重载 /// </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> /// 静态类,来扩展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> [System.AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)] public class LCQAttribute : System.Attribute {   } }

  this第【1】种用法,索引器

  ?

1 2 3