C#中的this用法,相信大家應該有用過,但你用過幾種?以下是個人總結的this幾種用法,歡迎大家拍磚,廢話少說,直接列出用法及相關代碼。
this用法1:限定被相似的名稱隱藏的成員
/// <summary>
/// /******************************************/
/// /* this用法1:限定被相似的名稱隱藏的成員 */
/// /******************************************/
/// </summary>
/// <param name="Name"></param>
public Person(string Name, string Sex)
{
this.Name = Name;
this.Sex = Sex;
}
this用法2:將對象作為參數傳遞到其他方法
/// <summary>
///Person 的摘要說明
/// </summary>
public class Person
{
/// <summary>
/// 姓名
/// </summary>
public string Name { set; get; }
/// <summary>
/// /*******************************************/
/// /* this用法2:將對象作為參數傳遞到其他方法 */
/// /*******************************************/
/// </summary>
public void ShowName()
{
Helper.PrintName(this);
}
}
/// <summary>
/// 輔助類
/// </summary>
public static class Helper
{
/// <summary>
/// 打印人名
/// </summary>
/// <param name="person"></param>
public static void PrintName(Person person)
{
HttpContext.Current.Response.Write("姓名:" + person.Name + "<br />");
}
}
this用法3:聲明索引器
/// <summary>
/// 其它屬性
/// </summary>
public NameValueCollection Attr = new NameValueCollection();
/// <summary>
/// /*************************/
/// /* this用法3:聲明索引器 */
/// /*************************/
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string this[string key]
{
set
{
Attr[key] = value;
}
get
{
return Attr[key];
}
}
this用法4:擴展對象的方法
/// <summary>
///Person 的摘要說明
/// </summary>
public class Person
{ /// <summary>
/// 性別
/// </summary>
public string Sex { set; get; }
}
/// <summary>
/// 輔助類
/// </summary>
public static class Helper
{
/// <summary>
/// /*****************************/
/// /* this用法4:擴展對象的方法 */
/// /*****************************/
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public static string GetSex(this Person item)
{
return item.Sex;
}
}
調用:
Person person = new Person();
person.GetSex();
四種用法完整代碼如下:
show sourceusing System;
using System.Collections.Generic;
using System.Web;
using System.Collections;
using System.Collections.Specialized;
/// <summary>
///Person 的摘要說明
/// </summary>
public class Person
{
/// <summary>
/// 姓名
/// </summary>
public string Name { set; get; }
/// <summary>
/// 性別
/// </summary>
public string Sex { set; get; }
/// <summary>
/// 其它屬性
/// </summary>
public NameValueCollection Attr = new NameValueCollection();
public Person()
{
}
/// <summary>
/// /******************************************/
/// /* this用法1:限定被相似的名稱隱藏的成員 */
/// /******************************************/
/// </summary>
/// <param name="Name"></param>
public Person(string Name, string Sex)
{
this.Name = Name;
this.Sex = Sex;
}
/// <summary>
/// /*******************************************/
/// /* this用法2:將對象作為參數傳遞到其他方法 */
/// /*******************************************/
/// </summary>
public void ShowName()
{
Helper.PrintName(this);
}
/// <summary>
/// /*************************/
/// /* this用法3:聲明索引器 */
/// /*************************/
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string this[string key]
{
set
{
Attr[key] = value;
}
get
{
return Attr[key];
}
}
}
/// <summary>
/// 輔助類
/// </summary>
public static class Helper
{
/// <summary>
/// /*****************************/
/// /* this用法4:擴展對象的方法 */
/// /*****************************/
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public static string GetSex(this Person item)
{
return item.Sex;
}
/// <summary>
/// 打印人名
/// </summary>
/// <param name="person"></param>
public static void PrintName(Person person)
{
HttpContext.Current.Response.Write("姓名:" + person.Name + "<br />");
}
}
調用示例:
show source//this用法1示例
Person person = new Person("小她", "女");
//this用法2示例
person.ShowName();
//this用法3示例
person["Height"] = "175cm";
Response.Write("身高:" + person["Height"] + "<br />");
person["Weight"] = "110kg";
Response.Write("體重:" + person["Weight"] + "<br />");
//this用法4示例
Response.Write("性別:" + person.GetSex() + "<br />");
由於時間關系,就不說太多,如有不足之處,懇請大家批評指正。
完整示例源碼下載:http://www.BkJia.com/uploadfile/2011/1013/20111013110305836.rar
摘自:零星碎事