C#中this的用法,你用过几种?【含源码示例】

摘自:http://www.2cto.com/kf/201110/107591.html

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://up.2cto.com/2011/1013/20111013110305836.rar
摘自:零星碎事

C#中this的用法,你用过几种?的更多相关文章

  1. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  2. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  3. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  4. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  5. jQuery中Animate进阶用法(一)

    jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...

  6. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  7. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  8. jQuery中eq()方法用法实例

    本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...

  9. php中return的用法实例分析

    本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...

  10. Java中getResourceAsStream的用法

    首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在 ...

随机推荐

  1. C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]

    C# Activex开发.打包.签名.发布 2013-06-22 12:01:20 浏览:3823 一.前言 最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信.调用,单单依靠HTML ...

  2. 正则指引-字符组demo

    class Program { static void Main(string[] args) { string str = "b"; var result1 = Regex.Is ...

  3. 如何启动ResourceManager和NodeManager

    登录到bigtop1上,vagrant ssh bigtop1 将/usr/lib/hadoop/libexec/init-hdfs.sh文件内容替换为: #!/bin/bash -ex # # Li ...

  4. Oracle 数据库表同步方法浅议

    总结一下Oracle数据库表级别的复制同步 一.通过触发器进行表的复制 原理,是监听表上都某一字段进行的DML操作,然后得到DML操作的数据,重新在另一个表上执行DML操作. 优点: 简单,编写一个触 ...

  5. 日暮·第一章·决斗

    日暮 第一章 决斗   泉州府,位于帝国的东南沿海,在数百年前,这里已是帝国最大的通商口岸之一,其一城之繁荣喧哗足以与异邦小国的都城相媲美,无数的人曾经来到这里,追逐财富,梦想,女人以及所有他们认为可 ...

  6. (笔记)Linux内核学习(九)之内核内存管理方式

    一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...

  7. AD10长方形通孔焊盘的画法

    1.点击工具栏中[放置焊盘]按钮 2.按键盘Tab键弹出[焊盘]对话框 3.设置[空洞信息]相关尺寸(根据自己所需实际设置) 这里左边的单选按钮选择“槽”,通孔尺寸输入20mil,长度为80mil,旋 ...

  8. 通过DOS、SHELL批处理命令加载Lib并编译和打包Java项目(或者运行项目)

    有些时候,需要通过DOS批处理来编译整个项目的JAVA文件:并且编译后还要对Class文件进行打包成jar文件...这还不是最烦的,最烦的是,编译和打包的时候需要依赖其他多个jar文件,困难就这么来了 ...

  9. 【学】常用hash算法的介绍

    基本知识 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映 ...

  10. win平台,apache通过web访问svn

    上个月用php写一个在线打包lua变成luac,碰到个权限问题.pysvn无法更新.网上搜了好半天都找不到解决方法.最好还是自己解决了. 解决方法也很简单,找到aphache服务,提权限就行了.lin ...