Sobes.tech
Junior — Middle

Оё метавонед принсипи типизатсияи унитариро (патка) ва чӣ гуна дар барномасозӣ истифода мешавад, шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Тасвири қуши (duck typing) — иншоот дар барномаигӣ, ки дар он навъи объект на аз синф ё мерос, балки аз ҳузури баъзе методҳо ва хосиятҳо муайян мешавад.

Фраза "Агар чизе мисли қуш, шиновтани мисли қуш ва қиқир-қиқир кардани мисли қуш бошад, пас он қуш аст" мазмуни асосро ифода мекунад: муҳим нест, ки навъи объект чист, балки рафтору амалҳояш.

Дар C# ин механизм дарунсохт нест, чун дар забонҳои динамикӣ, аммо бо истифода аз интерфейсҳо ё навъи динамикӣ (dynamic) имитатсия кардан мумкин аст. Масалан, агар объект методҳои заруриро иҷро кунад, метавонад бе санҷиши қатъии навъ истифода шавад.

Масалан бо dynamic:

void MakeItQuack(dynamic duck) {
    duck.Quack();
}

class Duck {
    public void Quack() {
        Console.WriteLine("Кря-кря!");
    }
}

MakeItQuack(new Duck());

Ин ҷо муҳим аст, ки объекте, ки дода мешавад, метод Quack-ро дошта бошад, вагарна хатогӣ дар вақти иҷро пайдо мешавад.