Czy jest możliwe zaimplementowanie klasy ograniczonej do dwóch unikalnych parametrów ogólnych?Ogólna klasa z dwoma nierównoległymi (unikalnymi) typami:
Jeśli tak nie jest, czy to dlatego, że jest niezaimplementowane, czy też nie byłoby możliwe ze względu na strukturę języka (dziedziczenie)?
chciałbym coś w postaci:
class BidirectionalMap<T1,T2> where T1 != T2
{
...
}
ja wdrożenie Bidirectional dictionary. Jest to głównie kwestia ciekawości, a nie potrzeby.
sparafrazować z uwagami:
Dan: "Jakie są negatywne konsekwencje, czy to ograniczenie nie jest spełniony"
Ja: "Następnie użytkownik może indeksować za pomocą mapy [t1] i mapy [t2] .Jeśli byłyby tego samego typu, nie byłoby rozróżnienia i nie miałoby to żadnego sensu."
Dan: Kompilator rzeczywiście pozwala [dwa ogólne parametry typu definiują przeciążenia różnych metod], więc jestem ciekawy; czy arbitralnie wybiera jedną z metod wywoływania?
Zawsze można wyrzucić 'nowy ShouldBeCompileTimeError()' w konstruktorze . :-) – foson
prawdopodobnie dlatego, że nie ma sensu, są to generics, coś, co nie powinno być "ograniczane" przez typy. – GriffinHeart
Z ciekawości, jakie są negatywne konsekwencje, jeśli to ograniczenie nie zostanie spełnione? Mapowanie obiektów z tego samego zestawu jest bardzo powszechnym wymogiem. –