Files
codeql/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/ClassDoesNotImplementEqualsGood.cs
2018-08-02 17:53:23 +01:00

48 lines
1.2 KiB
C#

using System;
class Good
{
class Car
{
protected string make;
protected string model;
public Car(string make, string model)
{
this.make = make;
this.model = model;
}
public override bool Equals(object obj)
{
if (obj is Car c && c.GetType() == typeof(Car))
return make == c.make && model == c.model;
return false;
}
}
class GasolineCar : Car
{
protected bool unleaded;
public GasolineCar(string make, string model, bool unleaded) : base(make, model)
{
this.unleaded = unleaded;
}
public override bool Equals(object obj)
{
if (obj is GasolineCar gc && gc.GetType() == typeof(GasolineCar))
return make == gc.make && model == gc.model && unleaded == gc.unleaded;
return false;
}
}
public static void Main(string[] args)
{
var car1 = new GasolineCar("Ford", "Focus", true);
var car2 = new GasolineCar("Ford", "Focus", false);
Console.WriteLine("car1 " + (car1.Equals(car2) ? "does" : "does not") + " equal car2.");
}
}