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

标签: c# string class
767人阅读 评论(1) 收藏 举报
分类:

关键字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)。

查看评论

JAVA_SE基础——32.this关键字调用本类的构造方法

黑马入学blog... 也算是学习笔记。 下面我们来看段代码:
  • ThesCript_j
  • ThesCript_j
  • 2015-09-26 21:39:42
  • 1358

this/调用本类属性(this表示当前属性)

重点:只要在类的方法中访问类中的属性,那么属性前一定要追加“this”关键字的形式从this的实际使用来讲可以做三件事1.调用本类属性2.调用本类方法(基本、构造)3.表示当前对象(相对概念)使用th...
  • weixin_41197830
  • weixin_41197830
  • 2018-02-28 18:26:17
  • 25

java类私有成员在本类中可以任意访问

java类私有成员在本类中可以任意访问 参数中employee对象中的name是private的,因为在本类中,所以可以访问到。 private的访问权限是本类,不是本对象 /****...
  • shyandsy
  • shyandsy
  • 2013-03-19 00:28:23
  • 2005

类的静态方法(函数)中为什么不能调用非静态成员(属性)?

程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所...
  • ZOLoveGD
  • ZOLoveGD
  • 2008-09-11 17:20:00
  • 4728

Java中this关键字在构造方法中的使用

1. Java中this关键字代表对象本身。用this关键字可以在类的内部调用属性和方法,这样代码的可读性比较高,因为它明确的指出了这个属性或方法的来源。 2. 同时在构造函数中也可以使用thi...
  • QPC908694753
  • QPC908694753
  • 2017-03-07 19:44:57
  • 1533

C#中this关键字详解

C#所有的对象都将创建在托管堆上。实例化后的类型我们称之为对象,其核心特征便是拥有了一份自己特有的数据成员拷贝。这些为特有的对象所持有的数据成员我们称之为实例成员。相反那些不为特有的对象所持有的数据成...
  • lin37985
  • lin37985
  • 2015-06-20 18:04:51
  • 3009

方法中怎样调用本类中的方法

知道调用其他类的方法用new A().方法;却忘了怎么调用本类中的方法/笑cry,提示下用关键字this。...
  • xiyangyang8110
  • xiyangyang8110
  • 2016-09-29 20:01:54
  • 786

C#中this方法的一些问题

  • 2009年11月25日 19:24
  • 9KB
  • 下载

Python中类的私有属性和私有方法

该文章转载于 Python 类的私有变量和私有方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 ...
  • KlD1412
  • KlD1412
  • 2018-01-22 12:01:27
  • 50

深入this关键字(静态方法中不能调用非静态成员的解释)

在本文的开头,非常感谢Thining in JAVA这本书给我的启发,大师就是大师,正是因为有了你们这些大师对基础的极致追求,我们这些菜鸟才少走了很多弯路,BY THE WAY: 陈昊鹏翻译的那个有...
  • iverson89w
  • iverson89w
  • 2015-04-26 14:24:32
  • 1270
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 257万+
    积分: 3万+
    排名: 134
    博客专栏
    最新评论
    文章存档