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
{ }
}

this的作用--转载的更多相关文章

  1. java中关键字volatile的作用(转载)

    转载:http://blog.csdn.net/orzorz/article/details/4319055 用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对 ...

  2. OPTIMIZE TABLE的作用--转载

    当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删 除操作后在数据文件中留下碎片所致.Discuz! 在系统数设置界面提供了数据表优化的功能,可以去除删除操作后留下的数据文件 ...

  3. java 线程Thread.Sleep详解 Thread.Sleep(0)的作用(转载)

    我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 1.假设现在是 2008-4-7 12:00:00.000,如果 ...

  4. SET QUOTED_IDENTIFIER OFF语句的作用 转载

    SET QUOTED_IDENTIFIER ON SELECT * FROM "USER" WHERE a='netasp' SET QUOTED_IDENTIFIER ON SE ...

  5. HTTP协议的消息头:Content-Type和Accept的作用 转载https://www.cnblogs.com/lexiaofei/p/7289436.html

    一.背景知识 1.概述 Http报头分为通用报头,请求报头,响应报头和实体报头. 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报头结构:通用报头|响应报头|实体报头 Acc ...

  6. spring各jar包作用(转载)

     除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有 ...

  7. 【Java讨论】引用类型赋值为null对加速垃圾回收的作用(转载)

    :有一些人认为等于null可以帮助垃圾回收机制早点发现并标识对象是垃圾.其他人则认为这没有任何帮助.是否赋值为null的问题首先在方法的内部被人提起.现在,为了更好的阐述提出的问题,我们来撰写一个Wi ...

  8. mvc 当中 [ValidateAntiForgeryToken] 的作用 转载https://www.cnblogs.com/hechunming/p/4647646.html

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  9. mysql中OPTIMIZE TABLE的作用

    转载▼ 1.先来看看多次删除插入操作后的表索引情况 mysql> SHOW INDEX FROM `tbl_name`; +----------+------------+----------- ...

随机推荐

  1. Oracle客户端简易连接报错ORA-12154,TNS-03505

    环境: 服务端:RHEL6.5 + Oracle Server 11.2.0.4 客户端:Win2003 + Oracle Client 10.2.0.1 1.问题现象 2.Troubleshooti ...

  2. 转:C语言中的头文件可以自己写吗?

    转自:http://www.eefocus.com/computer00/blog/08-09/155791_9ebdc.html 一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的. ...

  3. MySQL一个语句查出各种整形占用字节数及最大最小值

    直接上码: as min_num union , union , union , union , union ,) union ,) union ,) union ,) union ,); +---- ...

  4. LINQ to SQL语句(16)之对象标识

    对象标识 运行库中的对象具有唯一标识.引用同一对象的两个变量实际上是引用此对象的同一实例.你更改一个变量后,可以通过另一个变量看到这些更改. 关系数据库表中的行不具有唯一标识.由于每一行都具有唯一的主 ...

  5. 火狐浏览器与Chorme的兼容性小问题

    1.如果 result 返回时空字符串, 则在 火狐里面 回调函数不会进入执行. 如果是 谷歌浏览器,则会 执行回调. $.post(, ipagesize: , strSearchKey: strk ...

  6. Asp.net mvc返回Xml结果,扩展Controller实现XmlResult以返回XML格式数据

    我们都知道Asp.net MVC自带的Action可以有多种类型,比如ActionResult,ContentResult,JsonResult……,但是很遗憾没有支持直接返回XML的XmlResul ...

  7. [WCF编程]12.事务:服务事务编程(上)

    一.设置环境事务 默认情况下,服务类和操作没有环境事务,即使客户端事务传播到服务端也是如此. 尽管强制事务流从客户端传播过来,但服务端的环境事务依旧为null.为了启用环境事务,每个操作必须告诉WCF ...

  8. T- SQL性能优化详解

    摘自:http://www.cnblogs.com/Shaina/archive/2012/04/22/2464576.html 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册 ...

  9. C#基础-邮件发送

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. java良好的编码习惯

    1. 尽量在合适的场合使用单例   使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步 ...