一、this保留字

this保留字一般只在构造函数、类的方法和类的实例中使用。它有以下含义:

?在类的构造函数中出现的this,则作为一个值类型,表示对正在构造的对象本身的引用。

?在类的方法中出现的this,则作为一个值类型,表示对调用该方法的对象的引用。

?在结构的构造函数中出现的this,则作为一个变量类型,表示对正在构造的结构的引用。

?在结构的方法中出现的this,则作为一个变量类型,表示对调用该方法的结构的引用。
除此之外,在其它地方使用this保留字都是不合法的。

二、提示

假如类中有一个成员变量a,同时在该类的成员函数中又定义了一个局部变量a,此时就必须使用this关键字来指定类的成员变量a了,具体写法就是:

this.a  // 指定类的成员变量a,而不是成员函数中的局部变量a请阅读三、示例。

注:在类中,所谓的成员函数,实际上就是类的方法。

this表示当前类。

比如在一个类A中有一个b方法。如果要在类A中调用这个b方法,就可以使用:

this.b如果要在别的类中调用这个方法,就必须先实例化一个对象,然后再调用:

A a = new a();
a.b

在静态的方法中不能使用this,比如main方法就是一个静态的方法,因此,不能在main方法中使用this。

三、示例
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class classTest                 // 自定义类classTest
{
    private int age = 20;       // 私有成员
    public int ShowAge1(int age)// 参数和私有成员重名。
    {
        return this.age;        // 返回的是私有成员age的数值
    }
    public int ShowAge2(int age)
    {
        return age;             // 返回的是参数的数值
    }
    // 如果参数和私有成员不重名,在方法中访问成员时不需要添加this,
    // 但好的习惯是加上this。
    public int ShowAge3(int newage)
    {
        return age;
    }
    public int ShowAge4(int newage)
    {
        return this.age;
    }
}

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            // C#中this保留字的用法-www.baike369.com
            classTest classTest1 = new classTest();
            Console.WriteLine(classTest1.ShowAge1(100));
            Console.WriteLine(classTest1.ShowAge2(100));
            Console.WriteLine(classTest1.ShowAge3(100));
            Console.WriteLine(classTest1.ShowAge4(100));
            Console.ReadLine();
        }
    }
}

运行结果:
 
20
100
20
20

C#中this保留字的用法的更多相关文章

  1. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  2. ecshop中foreach的详细用法归纳

    ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...

  3. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  4. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  5. C#中dynamic的正确用法

    C#中dynamic的正确用法  http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...

  6. C++中typename关键字的用法

    我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法

  7. Guava中Predicate的常见用法

    Guava中Predicate的常见用法 1.  Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...

  8. C++中const 的各种用法

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...

  9. JS里设定延时:js中SetInterval与setTimeout用法

     js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...

随机推荐

  1. js 中callback函数的定义和使用

    这是js里的解释了,其他语言的算我没说. 字面上理解下来就是,回调就是一个函数的调用过程.那么就从理解这个调用过程开始吧.函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b.那么这个过 ...

  2. F. Cooking Time 贪心

    http://codeforces.com/gym/101498/problem/F 对于知道使用情况的置换算法,最优解是找一个最后需要使用的物品替换掉 也就是,如果一个物品后面已经不需要用到,就要拿 ...

  3. [原创]II7/IIS8屏蔽YisouSpider蜘蛛

    来源:http://www.0531s.com/content-46-1927014-1.html YisouSpider蜘蛛抓取网页能够导致CPU暴涨,影响其他蜘蛛和用户的访问,多次实验后,发现II ...

  4. 深入理解java虚拟机阅读笔记(1)运行时数据区域

    java虚拟机所管理的内存区域主要分为方法区.堆:虚拟机栈.本地方法栈.程序计数器,如图: 1.程序计数器是当前线程所执行的字节码行号指示器,用以记录当前指令执行的位置.程序计数器是线程私有的,每个线 ...

  5. 我对CSS选择器的认识

    我对CSS选择器的认识 一.简述 CSS选择器是对HTML元素进行选择的筛选条件,大概可以分为两类: 特征选择器——根据元素自身所具有的某种特征进行筛选,比如名称.ID.属性等: 关系选择器——根据元 ...

  6. (一)JavaScript之[数据类型]与[对象]

    1].数据类型字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null).未定义 (Undefined). //极大或极小的数字可以 ...

  7. ArcMap如何修改地图坐标系统

    有时候,地图投影坐标需要作出修改,使得符合要求,不然空间参考不一样无法进行进一步的操作,分析等!下面介绍arcgis地图投影坐标的修改! 1.首先,将地图数据导入,这里我导入的是广西的边界图bound ...

  8. 启动selenium server

    java -jar selenium-server-standalone-2.37.0.jar

  9. SuiteCRM-7.7.6 (Ubuntu 16.04)

    平台: Ubuntu 类型: 虚拟机镜像 软件包: suitecrm-7.7.6 commercial crm open-source suitecrm 服务优惠价: 按服务商许可协议 云服务器费用: ...

  10. 【css基础修炼之路】— 谈谈元素的垂直水平居中

    作为一个初级的前端工程师,在开发的过程中遇到了许多问题,其中使元素垂直居中这个问题难住了我,可能在大家看来这是一个非常小的问题,但是却困扰了我很长时间,于是决定做一个总结!!! 废话不多说,直接上代码 ...