Generic types constraint for parameterless constructor in C#

class Car {
    public string Name { getset; }

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

class Truck {
    public string Name { getset; }
}

static void Swap<T>(ref T a, ref T b) where T : new() {
    var tmp = a;
    a = b;
    b = tmp;
}

var c1 = new Car("Cami");
var c2 = new Car("Rush");
Swap(ref c1, ref c2);//<- Error

var t1 = new Truck { Name = "Kamaz" };
var t2 = new Truck { Name = "Ural" };
Swap(ref t1, ref t2);