18 NİSAN 2010, Pazar
Kovaryans ve contravariance gerçek hayattan örnek
Küçük bir sorun gerçek dünyada kovaryans ve contravariance kullanırdım nasıl anlamakta güçlük çekiyorum.
Şu ana kadar gördüğüm tek örnek aynı eski dizi örnek olmuştur.
object[] objectArray = new string[] { "string 1", "string 2" };
Eğer başka bir yerde kullanıldığını görsem benim gelişimi sırasında kullanmak için izin verecek bir örnek görmek güzel olurdu.
CEVAP
18 NİSAN 2010, Pazar
// Contravariance
interface IGobbler<in T> {
void gobble(T t);
}
// Since a QuadrupedGobbler can gobble any four-footed
// creature, it is OK to treat it as a donkey gobbler.
IGobbler<Donkey> dg = new QuadrupedGobbler();
dg.gobble(MyDonkey());
// Covariance
interface ISpewer<out T> {
T spew();
}
// A MouseSpewer obviously spews rodents (all mice are
// rodents), so we can treat it as a rodent spewer.
ISpewer<Rodent> rs = new MouseSpewer();
Rodent r = rs.spew();
Bütünlüğü için...
// Invariance
interface IHat<T> {
void hide(T t);
T pull();
}
// A RabbitHat…
IHat<Rabbit> rHat = RabbitHat();
// …cannot be treated covariantly as a mammal hat…
IHat<Mammal> mHat = rHat; // Compiler error
// …because…
mHat.hide(new Dolphin()); // Hide a dolphin in a rabbit hat??
// It also cannot be treated contravariantly as a cottontail hat…
IHat<CottonTail> cHat = rHat; // Compiler error
// …because…
rHat.hide(new MarshRabbit());
cHat.pull(); // Pull a marsh rabbit out of a cottontail hat??
Bunu Paylaş:
Python özelliği özelliğini kullanma il...
™ JQuery Mobile, gerçek dünya örnek ve...
- Gerçek bir örnek kaçınarak kansız et...
Nasıl gerçek özel bir örnek değişken y...
Gerçek hayatta DIŞ / ÇAPRAZ kullanmak ...