首页 > 解决方案 > 在 C# 中访问对象的“名称”属性

问题描述

我正在学习 C#(我是新手)并且正在构建一个小型机场应用程序。我希望能够获取机场中飞机的名称,而不是简单地知道 List 包含各种Airport.Plane对象。我目前的代码是:

机场.cs:

using System;
using System.Collections.Generic;

namespace Airport
{
    public class Airport
    {
        public List<object> planes;

        public Airport()
        {
            planes = new List<object>();
        }

        public List<object> Land(object plane)
        {
            planes.Add(plane);
            Console.WriteLine("Currently in the airport:");
            planes.ForEach(Console.WriteLine);
            return planes;
        }

        public List<object> TakeOff(object plane)
        {
            planes.Remove(plane);
            Console.WriteLine("Currently in the airport:");
            planes.ForEach(Console.WriteLine);
            return planes;
        }

        public int GetPlaneCount()
        {
            Console.WriteLine(planes.Count);
            return planes.Count;
        }
    }
}

平面.cs:

using System;
namespace Airport
{
    public class Plane
    {
        public string Name { get; set; }

        public Plane(string name)
        {
            Name = name;
        }
    }
}



程序.cs:

using System;

namespace Airport
{
    class Program
    {
        static void Main(string[] args)
        {
            Airport airport = new Airport();
            Plane plane = new Plane("Private Jet");
            airport.Land(plane);
            airport.TakeOff(plane);
            airport.GetPlaneCount();
        }
    }
}


我试图通过以下方式访问机场中飞机的名称,Console.Log(plane.Name);但出现以下错误:“'对象'不包含名称的定义”。任何帮助将非常感激!

谢谢

标签: c#object

解决方案


一些伪代码来帮助你理解

public class Airport
{
    public string AirportName { get; set;}

    public List<Plane> planes;

    public Airport(string airportName)
    {
        AirportName = airportName;
        planes = new List<Plane>();
    }

    public List<Plane> Land(Plane plane)
    {
        planes.Add(plane);
        return planes;
    }

    public List<Plane> TakeOff(Plane plane)
    {
        planes.Remove(plane);
        return planes;
    }

    public int GetPlaneCount()
    {
        Console.WriteLine(planes.Count);
        return planes.Count;
    }
}

public void Main()
{
    var capeTownAirport = new Airport("Cape Town")

    var planeA = new Plane("facy plane");
    var planeB = new Plane("Another facy plane");

    var currentPlans = capeTownAirport.Land(planeA);            

    var currentPlans2 = capeTownAirport.Land(planeA);

    foreach(var plane in currentPlans2)
    {
         Console.WriteLine(plane.Name);
    }
}

推荐阅读