C#中this关键字-调用本类成员
来源:互联网 发布:colorbox软件下载 编辑:程序博客网 时间:2024/05/16 19:52
关键字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#中base关键字-调用父类成员
- C#中this关键字详解
- 深入this关键字(静态方法中不能调用非静态成员的解释)
- [转]在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中能不能调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- C++在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- 在类的成员函数中调用delete this
- java编码转换的详细过程
- C#中base关键字-调用父类成员
- 读《数码影像专业教程》等有感
- windows随即产生多个矩形(Rectangle)
- Linux 信号量 sem_init(3) (翻译 man 3)
- C#中this关键字-调用本类成员
- 网络是个万象社会
- 当视频网站都支持html5
- 删除一个类-----------VC++中的方法
- C#中调用父类的构造方法和成员
- 洋为中用
- CListCtrl控件功能扩展(滚动条)总结
- 关于苹果和微软
- postgre 存储过程简单实用方法 (过程语言: PL/pgSQL)