zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    解剖PetShop系列之六PetShop表示层设计
    解剖PetShop系列之五PetShop之业务逻辑层设计
    用memset给一个char设置0xff,然后将该char和0xff ==,能相等么?
    用gdb如何查看指定地址的内存内容?
    Open a pipe will block if other side hasn't opened this pipe
    inet_aton和inet_pton的区别
    很多源码中看到的ignore SIGCHLD信号是做什么用的?
    Linux下getopt函数使用Tips
    Linux下编译一个静态链接的程序的注意点
    Linux 脚本和程序对SIGINT的处理方案,脚本通过kill给程序传递信号
  • 原文地址:https://www.cnblogs.com/melao2006/p/4239321.html
Copyright © 2011-2022 走看看