如何解决C# - 如何使用该键的值获取对字典的键对象的引用
我正在制作一个提供一些服务的车库。 该问题的相关类是:
- 班级车库
- 抽象类车辆
- 3 个来自车辆(汽车、摩托车、卡车)的派生类
在课堂车库中,我有一本字典,其中包含所有车辆作为钥匙,它们在车库中的状态作为价值。
为了练习不同的 C# 功能,我覆盖了 Vehicle GetHashCode() 和 Equals(),我想用它来获取对 O(1) 中具有相同车牌号的车辆的引用。
我所做的是从字典中随机克隆一辆汽车,将其车牌号更改为所需的车牌号,然后检查它是否包含返回布尔值。
我下面的代码让我知道那辆车的价值(车库中的车辆状态),我如何获得对带有该车牌的“真实”车辆的引用?
class Garage
{
public enum eServiceStatus
{
Done,Paid,Active
}
private static Dictionary<Vehicle,eServiceStatus> m_Vehicles = new Dictionary<Vehicle,eServiceStatus>();
private static Vehicle findVehicleByLicensePlate(string i_LicensePlate)
{
Vehicle vehicletoFind = Vehicles.ElementAtOrDefault(0).Key.Clone();
if (vehicletoFind == default(Vehicle))
{
throw new ArgumentException();
}
vehicletoFind.LicensePlate = i_LicensePlate;
if (Vehicles.ContainsKey(vehicletoFind))
{
vehicletoFind = Vehicles[vehicletoFind];
}
return vehicletoFind;
}
/* ... */
}
abstract class Vehicle
{
private string m_LicensePlate;
public Vehicle(string i_LicensePlate)
{
m_LicensePlate = i_LicensePlate;
}
public string LicensePlate
{
get { return m_LicensePlate; }
set { m_LicensePlate = value; }
}
public override bool Equals(object obj)
{
bool equals = false;
Vehicle vehicletocheck = obj as Vehicle;
if (vehicletocheck != null)
{
equals = vehicletocheck.LicensePlate == this.LicensePlate;
}
return equals;
}
public override int GetHashCode()
{
return this.LicensePlate.GetHashCode();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。