this的作用--转载
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AppConsole { class Program { /// <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用作参数传递 user.Say(this); Console.WriteLine( "第【二】种用法:this用作参数传递" ); 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(); } } /// <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 { } } |
树立目标,保持活力,gogogo!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具