`
wsql
  • 浏览: 11758062 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C#中this关键字-调用本类成员

 
阅读更多

关键字this有两种基本的用法,一是用来进行this访问,二是在声明构造函数时指定需要先执行的构造函数。

一、this访问

在类的实例构造函数和实例函数成员中,关键字this表示当前的类实例或者对象的引用。this不能用在静态构造函数和静态函数成员中,也不能在其他地方使用。

当在实例构造函数或方法内使用了与字段名相同的变量名或参数名时,可以使用this来区别字段和变量或者参数。下面的代码演示了this的用法。

public class Dog

{

public string name;

public int age;

public Dog()

{

}

public Dog(string name) // 在这个函数内,name是指传入的参数name

{

this.name = name; // this.name表示字段name

}

public Dog(string name, int age) // 在这个函数内,name是指传入的参数name

{ // age是指传入的参数age

this.name = name; // this.name表示字段name

this.age = age; // this.age表示字段age

// 非静态成员可以在构造函数或非静态方法中使用this.来调用或访问,也可以直接打变量的名字。因此这一句等效于name = name;
//但是这时你会发现的变量name与传入的参数name同名,这里会造成二定义,所以要加个this.表示等号左边的name是当前类自己的变量。

}

}

实际上,this被定义为一个常量,因此,虽然在类的实例构造函数和实例函数成员中,this可以用于引用该函数成员调用所涉及的实例,但是不能对this本身赋值或者改变this的值。比如,this++,--this之类的操作都是非法的。

二、this用于构造函数声明
可以使用如下的形式来声明实例构造函数:

<访问修饰符> 类名 (形式参数表) : this(实际参数表)

{
//语句块
}

其中的this表示该类本身所声明的、形式参数表与『实际参数表』最匹配的另一个实例构造函数,这个构造函数会在执行正在声明的构造函数之前执行。

比如:

// ThisAndConstructor.cs

// 关键字this用于声明构造函数

using System;

class A

{

public A(int n)

{

Console.WriteLine("A.A(int n)");

}

public A(string s, int n) : this(0)

{

Console.WriteLine("A.A(string s, int n)");

}

}

class Test

{

static void Main()

{

A a = new A("A Class", 1);

}

}

将输出:

A.A(int n)

A.A(string s, int n)

这说明,执行构造函数A(string s, int n)之前先执行了构造函数A(int n)。

分享到:
评论

相关推荐

    C#使用this关键字实现串联构造函数调用方法

    本文实例讲述了C#使用this关键字实现串联构造函数调用方法。分享给大家供大家参考。具体分析如下: 在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现...

    c#访问this关键字和base关键字示例

    指定创建派生类实例时...创建派生类Student,包含一个数据成员studentId,一个具有三个参数的派生类构造函数,并用:base调用基类构造函数、并重写所继承基类的虚方法GetInfo(),调用基类的方法显示name和age的内容。 代

    C# this关键字的四种用法

    本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下 用法一 this代表当前实例,用this.显式调用一个类的方法和成员 namespace Demo { public class Test { private string scope = 全局...

    图解JavaScript中的this关键字

    JavaScript 是一种脚本语言,支持函数式编程、闭包、基于原型的继承等高级功能。...在主流的面向对象的语言中(例如Java,C#等),this 含义是明确且具体的,即指向当前对象。一般在编译期绑定。而 Java

    C#基础知识之this关键字介绍

    本文主要介绍this关键字的几种使用方法,this可以代表当前实例,可以调用其他构造函数,还可以用来构建索引器,这里都有一一举例说明。

    在一小时内学会 C#(txt版本)

    C# 中所有内容都打包在类中,而所有的类又打包在命名空间中(正如文件存与文件夹中)。和 C++ 一样,有一个主函数作为你程序的入口点。C++ 的主函数名为 main,而 C# 中是大写 M 打头的 Main。 类块或结构定义之后...

    C# 参考之访问关键字:base、this

    base base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 示例: 在派生...

    C#基础语法:Base关键字学习笔记

    它与this关键字一样,都是作为类的实例(因此不能调用基类的静态成员和抽象成员)简写或者替代而存在的,只不过this关键字用于替代本类的实例,base关键字用于替代基类的实例,用法很简单,其访问基类的形式如下: ...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    5.4 使用this关键字 146 5.5 访问修饰符 151 5.6 属性 153 5.6.1 属性的声明 154 5.6.2 自动实现的属性 155 5.6.3 属性和字段的设计编码规范 157 5.6.4 提供属性验证 157 5.6.5 只读和...

    微软C#语言规范,C#语言教程中文版

    10.3.8.6 泛型类中的嵌套类型 285 10.3.9 保留成员名称 286 10.3.9.1 为属性保留的成员名称 286 10.3.9.2 为事件保留的成员名称 287 10.3.9.3 为索引器保留的成员名称 287 10.3.9.4 为析构函数保留的成员名称 287 ...

    Javascript this 的一些学习总结

    函数中的this •引用类型 •函数调用以及非引用类型 •引用类型以及this的null值 •函数作为构造器被调用时this的值 •手动设置函数调用时this的值 1.1.2 正文 由于许多面向对象的编程语言都包含this关键字,...

    API精灵源码(C#编)

    2004.03.09 完成对&lt;函数类&gt;的查询功能,包括 代码调用,中文注释,所需的DLL库,与C#中函数对应关系 2004.03.10 0:48:52 完成了用StringBuilder数组对原ComboBox的替换,可以使程序不用从新读取数据库就可以刷新...

    C#本质论(第3版)

    5.4 使用this关键字 5.5 访问修饰符 5.6 属性 5.6.1 属性的声明 5.6.2 自动实现的属性 5.6.3 命名规范 5.6.4 提供属性验证 5.6.5 读和只写属性 5.6.6 为取值方法和赋值方法指定访问修饰符 5.6.7 属性作为...

    轻松学C#(图解版)

    4.2.2 局部变量与字段同名的解决——this关键字 54 4.2.3 语句 55 4.2.4 全局变量 55 4.3 返回值 56 4.3.1 返回值类型 56 4.3.2 从方法返回 57 4.4 参数 58 4.4.1 参数的分类 58 4.4.2 引用参数(ref参数) 59 4.4.3...

    C#语言规范(4.0版本)

    Microsoft(微软)C#语言规范4.0版本,非常值得大家学习收藏! 目录 1. 简介 1 1.1 Hello world 1 1.2 程序结构 2 1.3 类型和变量 3 1.4 表达式 6 1.5 语句 8 1.6 类和对象 12 1.6.1 成员 12 1.6.2 可访问性 13 1.6.3 ...

    C#语言规范(2.0,3.0,4.0合集)

    这个是C#语言规范2.0,3.0,4.0的合集,是关于 C# 语法的权威资料。它们包含该语言各个方面的详细信息,包括 Visual C# 产品文档未涉及的许多语法点。 4.0目录 1. 简介 1 1.1 Hello world 1 1.2 程序结构 2 1.3 ...

    C#中静态的深入理解

    1、通过static关键字修饰,是属于类,实例成员属于对象,在这个类第一次加载的时候,这个类下面的所有静态成员会被加载。 2、静态成员只被创建一次,所以静态成员只有一份,实例成员有多少个对象,就有多少份。 3、...

    C#教程(语言规范)

    3.4.4 类成员. 53 3.4.5 接口成员... 54 3.4.6 数组成员... 54 3.4.7 委托成员... 54 3.5 成员访问 .. 54 3.5.1 已声明可访问性. 54 3.5.2 可访问域... 55 3.5.3 实例成员的受保护访问 57 3.5.4 可访问性...

Global site tag (gtag.js) - Google Analytics