public override string ToString()
return $"x: {x}, y: {y}";
public static Vector operator +(Vector a, Vector b)
set { if (value > 0) tires = value; }
public Vehicle(int tires)
public Vehicle() : this(4) { }
public virtual void Drive()
Console.WriteLine("Vehicle is driving");
Console.WriteLine("Vehicle braking!");
public string Brand { get; private set; }
public Car(string brand) : base()
public override void Drive()
Console.WriteLine("Car is driving");
public Porsche() : base("Porsche") { }
public override void Drive()
Console.WriteLine("Full speed!!");
Console.WriteLine("We have no brakes!!");
class Mercedes : Car, ITrunk
public Mercedes() : base("mercedes") { }
Console.WriteLine("Trunk is opened!");
Console.WriteLine("Trnk is closed!");
if (index >= 0 && index < array.Length)
throw new IndexOutOfRangeException();
public void Set(int index, T value)
if (index >= 0 && index < array.Length)
throw new IndexOutOfRangeException();
public override string ToString()
foreach (T value in array)
result += $"{value.ToString()}, ";
public static void Main(string[] args)
Vector a = new Vector() { x = 3, y = 1 },
b = new Vector() { x = 2, y = 6 };
Console.WriteLine(a + b);
Vehicle v = new Vehicle();
Console.WriteLine(v.Tires);
Console.WriteLine(v.Tires);
Console.WriteLine(v.Tires);
Car car = new Car("Mercedes");
Car porsche = new Porsche();
((Porsche)porsche).Brake();
Porsche realPorsche = porsche as Porsche;
ITrunk m = new Mercedes();
MyArray<int> arr = new MyArray<int>(5);