zoukankan      html  css  js  c++  java
  • C#中this的用法

    C#中this的用法:

    this 关键字引用类的当前实例。" 这是MSDN的解释

     * 我个人认为最好的理解方式,只要理解为“我的”就可以的,就是类的当前实例的引用

     * 先来解释一下什么是引用

     * 也许我们很迷惑C#中声明一个类的实例的过程很奇怪

     * 我们一般声明一个类的实例是这样的 A a; a=new A();本来已经声明的实例为什么还要"牛"

     * 先看第一句 A a; 其实那个a是一个引用,它只是在堆栈中的一个内存单元,在这个内存单元中存放着实例所在的位置,这一句只是声明了一个引用。

     * 再看第二句 a=new A(); 这一句才是给实例分配内存,其实是在堆中分配内存.

     * this 就是指的实例化的对象所在的位置.因为我们在编写类时还无法知道实例将实现在堆中的哪个位置.

     * 好吗,太高深了,能不能轻松点.好吧我们还用上帝造人来说.

     * 上帝要造人,先在实验室画了一个图,这个图就是类,然后上帝给他要造的人起名为张三,"我要造一个人叫张三",这个张三仅仅是个代号,然后上帝给张三分配了血肉骨头

     * 当上帝设计图纸时,还不知道这个人起什么名字,所以在使用这个未名人(或者说图纸上的人)的血肉时就用"我的"来代替.这个"我的"就是this.我们都是人,"我的耳朵"有可能指的是张三的耳朵,有可能指的是李四的耳朵,也有可能指的是秦始皇的耳朵.

     * 如果你学过C++语言的话,你完全可以把C#中的this等同于C++语言中的this指针,只不过在C# 中this是一个引用.

     * 在C#中没有出现指针的概念,目的是让人们认为它要比C++语言要简单,但这反而把一些问题搞复杂了.

    */

    using System;

    using System.Collections.Generic;

    using System.Text;

     

    class A

    {

        private int age=20;

        public int tellmeage1(int age)//注意虚参和私有成员重名了。

        {

            return this.age;//这里返回的是私有成员myage的数值

        }

        public int tellmeage2(int age)

        {

            return age;//这里返回的是虚参的数值

        }

        //如果虚参和私有成员不重名时,在方法中访问成员时可以不必非加上this,但好的习惯是加上this。

        public int tellmeage3(int newage)

        {

            return age;

        }

        public int tellmeage4(int newage)

        {

            return this.age;

        }

    }

     

     

    namespace aboutThis

    {

        class Program

        {

            static void Main(string[] args)

            {

                A a=new A();

                Console.WriteLine(a.tellmeage1(100));

                Console.WriteLine(a.tellmeage2(100));

                Console.WriteLine(a.tellmeage3(100));

                Console.WriteLine(a.tellmeage4(100));

               

            }

        }

    }

    //输出结果是

    //20

    //100

    //20

    //20

  • 相关阅读:
    财务高手-资本高手
    做到顶尖看三种书-大牛的书 工具书 教材书
    拓端tecdat|R语言使用HAR-RV预测实际波动率Realized Volatility案例
    拓端tecdat|WINBUGS对随机波动率模型进行贝叶斯估计与比较
    拓端tecdat|R语言机器学习实战之多项式回归
    拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
    拓端tecdat|TensorFlow 2.0 keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
    拓端tecdat|Python安装TensorFlow 2、tf.keras和深度学习模型的定义
    cookie绕过验证码登录
    [转]Python3 字典 items() 方法
  • 原文地址:https://www.cnblogs.com/zxx193/p/2964816.html
Copyright © 2011-2022 走看看