C#中this保留字的用法
一、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保留字的用法的更多相关文章
- Java中的Socket的用法
		
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
 - ecshop中foreach的详细用法归纳
		
ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...
 - matlab中patch函数的用法
		
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
 - C#中timer类的用法
		
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
 - C#中dynamic的正确用法
		
C#中dynamic的正确用法 http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...
 - C++中typename关键字的用法
		
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
 - Guava中Predicate的常见用法
		
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
 - C++中const 的各种用法
		
C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...
 - JS里设定延时:js中SetInterval与setTimeout用法
		
js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...
 
随机推荐
- java源文件组成部分
			
class HelloWorld{ public static void main(String[ ] args) { System.out.print("HelloWorld!!!&quo ...
 - liunx ssh
			
ssh-keygen -t rsa 生成创建公匙 ssh username@ip 连接远程服务器
 - Murano Deployment
			
2015-09-14 05:53:02 — Action deploy is scheduled 2015-09-14 05:53:03 — Unable to load due to 'could ...
 - apache配置多端口对应多个虚拟目录
			
经常需要在本地调试网站,却又不喜欢在http://localhost/网站的文件夹名 且几个比较重要的项目我想直接用端口号以示区分,想达到的效果如下: http://localhost/ 默认80端口 ...
 - mathjax符号
			
mathjax公式 \(\delta\): \delta \(\Delta\): \Delta \(\int\): \int \(\iint\): \iint \(\approx\): \approx ...
 - JavaScript  对象继承 OOP  (三)
			
对象继承 A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. JavaScript 语言的继承不通过 class (es6 中的class 不过是 ...
 - 【JavaScript】JavaScript赋值语句中的逻辑与&&和逻辑或||
			
在其他语言中,我们往往看到逻辑符号出现在判断语句当中,如 if(a||b){} 但在一些js相关的面试题或者书中,我们有时会看到逻辑与&&和逻辑或||符号出现在赋值语句或者返回语句中, ...
 - Errors while uninstall the reporting extensions
			
"Microsoft.crm.setup.Srsdataconnector UnregisterServer Action操作失败:Requested value 'geo' was not ...
 - Java Knowledge series 2
			
JVM Analysis & Design The object-oriented paradigm is a new and different way of thingking about ...
 - Android - 看似内存泄漏,实则不是,记一次内存泄漏的案例分析
			
APP中常常会存在内存泄漏的问题,一个简单的测试方法是,多次进入和退出同一页面(Activity),使用adb shell中的dumpsys meminfo com.android.settings ...