首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在类的方法中引用创建的类实例?

如何在类的方法中引用创建的类实例?
EN

Stack Overflow用户
提问于 2019-06-04 23:31:57
回答 1查看 440关注 0票数 0

这是我的代码(只是主程序类之外的类)。

它有两个类: Vehicle只有一些属性,Car继承了Vehicle并具有更多的功能,比如Car的构造函数" Car ()",打印特定汽车信息的方法"PrintCarInfo()“和car类的静态方法打印创建的Car实例的数量。

代码语言:javascript
复制
public class Vehicle
{
   protected double speed;
   protected int wheels = 4;
   protected string color;
   protected string manufacturer;
}

public class Car : Vehicle
{
    static int carCounter = 0;

    public Car(double speed, string color, string manufacturer)
    {
        this.speed = speed;
        this.color = color;
        this.manufacturer = manufacturer;
        Interlocked.Increment(ref carCounter);
    }

    public void PrintCarInfo()
    {
        Console.WriteLine("Speed of car is {0}", speed);
        Console.WriteLine("Car has {0} wheels", wheels);
        Console.WriteLine("Car is {0}", color);
        Console.WriteLine("Car was made by {0}", manufacturer);
        Console.WriteLine();
    }

    public static void NumberOfCars()
    {
        Console.WriteLine("Number of cars created: {0}", carCounter);
        Console.WriteLine();
    }

在创建了一个新的汽车实例Car car1 = new Car(120, "Red", "Porsche");之后,如何在PrintCarInfo() -method中打印该特定实例的名称?

目前,PrintCarInfo() -method打印汽车的速度、轮子、颜色和制造商,但我想在它们之前打印特定实例的名称。

类似于:Console.WriteLine("Info about {0}", "Insert instance reference here")

我希望避免将实例作为方法的参数,例如car1.PrintCarInfo(car1);

如何引用已创建的实例?(本例中为car1)

我试着尝试使用object carObject;,但没有成功。

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 23:55:35

使用虚拟属性/方法返回所需的标签。在基类的输出部分引用虚拟属性/方法。然后它会拿起正确的实例标签。示例:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        Vehicle v = new Vehicle();
        Car c = new Car();

        Console.WriteLine("Testing Vehicle base output");
        v.PrintInfo();
        Console.WriteLine("Testing Car inherited output");
        c.PrintInfo();

        return;
    }
}

class Vehicle
{
    public virtual string MyTypeName() { return "Vehicle"; }

    public void PrintInfo()
    {
        Console.WriteLine(string.Format("Type: {0}", this.MyTypeName()));
    }
}

class Car : Vehicle
{
    public override string MyTypeName() { return "Car"; }
}

这将产生以下输出

代码语言:javascript
复制
Testing Vehicle base output
Type: Vehicle
Testing Car inherited output
Type: Car
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56447035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档