C#中this的用法集锦

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

首先,我们分别创建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>

/// 构造器

/// </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】种用法,索引器

/// <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】种用法,当做参数传递

/// <summary>

/// this第【2】种用法,当做参数传递

/// </summary>

public void Said()

{

new VIP().Say(this);

}

this第【3】种用法,通过this()调用无参构造函数

/// <summary>

/// this第【3】种用法,通过this()调用无参构造函数

/// </summary>

/// <param name="UserName"></param>

public VIP(string UserName)

: this()

{

this.UserName = UserName;

}

this第【4】种用法:扩展User类

/// <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>

/// <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();

}

最终结果示意图

以上所述上就是本文的全部内容了,希望大家能够喜欢。

以上是 C#中this的用法集锦 的全部内容, 来源链接: utcz.com/z/320871.html

回到顶部