this关键字常用的一个功能是把一个当前对象实例的引用传递给一个方法

时间:2021-03-30 05:19:57
this关键字常用的一个功能是把一个当前对象实例的引用传递给一个方法。这句话抽象,求高人给个简单例子说明一下,让小弟学习一下

5 个解决方案

#1


this就是“当前对象实例的引用”。至于怎么使用它,是你自己的事。请自己去结合编程的需求去想,“放开”一点就行了。

#2


限定被相似的名称隐藏的成员 
将对象作为参数传递到其他方法 
声明索引器  
public class Action
    {
        public static void ToRun(Vehicle vehicle)
        {
        }
    }
    public class Vehicle
    {
        private string name;
        private int speed;
        private string[] array = new string[10];

        public Vehicle()
        {
        }
        //限定被相似的名称隐藏的成员
        public Vehicle(string name, int speed)
        {
            this.name = name;
            this.speed = speed;
        }

        public virtual  void ShowResult()
        {
        }
        public void Run()
        {
            //传递当前实例参数
            Action.ToRun(this);
        }
        //声明索引器,必须为this,这样就可以像数组一样来索引对象
        public string  this[int param]
        {
            get{return array[param];}
            set{array[param] = value;}
        }
    }

    public class Car: Vehicle
    {
        //派生类和基类通信,以base实现,基类首先被调用
        //指定创建派生类实例时应调用的基类构造函数
        public Car(): base("Car", 200)
        { }

        public Car(string name, int speed)
            : this()
        { }

        public override void ShowResult()
        {
            //调用基类上已被其他方法重写的方法
            base.ShowResult();
        }

    }

    public class Audi : Car
    {
        public Audi()
            : base("Audi", 300)
        { }
        public Audi(string name, int speed)
            : this()
        { 
        }

        public override void ShowResult()
        {
              base.ShowResult();
            base.Run();
        }
    }

#3


public class A
{
   int x;
  void show()
  {
      Console.WriteLien(this.x);//这里this 就是调用当前对象,也可以不用this 直接写x,不过这样的话有可能无法区分是类属性还是临时变量了,出了class A this就无用了。
      
  }

}

#5


感谢大家精彩的讲解,谢谢

#1


this就是“当前对象实例的引用”。至于怎么使用它,是你自己的事。请自己去结合编程的需求去想,“放开”一点就行了。

#2


限定被相似的名称隐藏的成员 
将对象作为参数传递到其他方法 
声明索引器  
public class Action
    {
        public static void ToRun(Vehicle vehicle)
        {
        }
    }
    public class Vehicle
    {
        private string name;
        private int speed;
        private string[] array = new string[10];

        public Vehicle()
        {
        }
        //限定被相似的名称隐藏的成员
        public Vehicle(string name, int speed)
        {
            this.name = name;
            this.speed = speed;
        }

        public virtual  void ShowResult()
        {
        }
        public void Run()
        {
            //传递当前实例参数
            Action.ToRun(this);
        }
        //声明索引器,必须为this,这样就可以像数组一样来索引对象
        public string  this[int param]
        {
            get{return array[param];}
            set{array[param] = value;}
        }
    }

    public class Car: Vehicle
    {
        //派生类和基类通信,以base实现,基类首先被调用
        //指定创建派生类实例时应调用的基类构造函数
        public Car(): base("Car", 200)
        { }

        public Car(string name, int speed)
            : this()
        { }

        public override void ShowResult()
        {
            //调用基类上已被其他方法重写的方法
            base.ShowResult();
        }

    }

    public class Audi : Car
    {
        public Audi()
            : base("Audi", 300)
        { }
        public Audi(string name, int speed)
            : this()
        { 
        }

        public override void ShowResult()
        {
              base.ShowResult();
            base.Run();
        }
    }

#3


public class A
{
   int x;
  void show()
  {
      Console.WriteLien(this.x);//这里this 就是调用当前对象,也可以不用this 直接写x,不过这样的话有可能无法区分是类属性还是临时变量了,出了class A this就无用了。
      
  }

}

#4


#5


感谢大家精彩的讲解,谢谢