c# - 为什么我不能创建对象实例?

标签 c# .net class oop

我需要将对象添加到列表中,但我不明白如何正确地进行。 我从控制台获得的每个新对象。 如何解决?

我的尝试:

namespace ExampleCars
{
    public class Car
    {
        public string name;
        public int speed;
        public Car(string name, int speed)
        {
            this.name = name;
            this.speed = speed;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string name;
            int speed, elements;
            List<Object> cars = new List<Object>();

            elements = Convert.ToInt32(Console.ReadLine());
            if (elements > 0)
            {                
                for (int i = 0; i < n; i++)
                {                    
                    name = Convert.ToString(Console.ReadLine());                    
                    speed = Convert.ToInt32(Console.ReadLine());                    
                    Car newCar = new Car(name, speed);
                    cars.Add(newCar);
                }
            }

            foreach (var oneCar in cars)
                Console.WriteLine(oneCar);
        }
    }
}

在控制台中我得到这个(elements == 1):

ExampleCars.Car

最佳答案

首先,最好创建CarsList,而不是Objects 的列表。所以改变这个:

List<Object> cars = new List<Object>();

对此:

List<Car> cars = new List<Car>();

另外,如果您使用属性而不是字段,那就太好了。最后,作为您问题的解决方案,并根据您需要在上一个 Console.Writeline 方法中显示的内容,您可以覆盖 ToString方法。你的类(class)应该是这样的:

public class Car
{
    public string Name { get; set; }
    public int Speed { get; set; }
    public Car(string name, int speed)
    {
        Name = name;
        Speed = speed;
    }

    public override string ToString()
    {
        return $"Name = {Name}, Speed = {Speed} ";
    }
}

如果您使用的是旧版本的 C#:

return String.Format("Name = {0}, Speed = {1}", Name, Speed);

$ 称为字符串插值,可从 C#6+ 获得。我使用旧版本的 C# 中提供的 String.Format 提供了它的等效项。

关于c# - 为什么我不能创建对象实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129840/

相关文章:

java - 将值从 A 类返回到 B 类,然后返回到 Main 类?

c# - WPF 将 slider 和文本框值绑定(bind)到静态 int 值

c# - 使用单例模式打开新的 winform

c# - 在 C# 中,在类中引用成员属性的普遍接受方式是什么?

c# - 为什么 linq-2-sql 会创建额外的不必要的对象?

class - 快速在 NSView 上画一条线

c# - 使用 Group By 优化 LINQ 性能

.net - 如何在 .ascx 页面中使用 javascript

.net - Windows 和 .NET 之间的时区是否同步

python - 为什么我在 Python 类定义中的生成器中得到这个 NameError?