Sobes.tech
Junior — Middle

Тавзеҳ диҳед, ки чӣ гуна тағйири навъи дар забонҳои объектӣ-равона аст, бо истифода аз мисолҳои UpCast ва DownCast

sobes.tech AI

Ҷавоб аз AI

Дар забонҳои объектӣ-бағиятӣ, мисоли C#, тағйирёбии намуд — ин тағйирёбии объект аз як намуд ба намуде дигар аст, ки бо он дар ҳирархияи меросӣ алоқаманд аст.

UpCast — ин тағйирёбии аз синфи фарзӣ ба синфи асосӣ аст. Ҳамеша бехатар аст ва талаб намекунад ишораи ошкоро, зеро синфи фарзӣ ҳамаи аъзои синфи асосиро дорад.

class Animal {}
class Dog : Animal {}

Dog dog = new Dog();
Animal animal = dog; // UpCast — тағйирёбии ғайриманзил

DownCast — ин тағйирёбии аз синфи асосӣ ба синфи фарзӣ аст. Мумкин аст бехатар набошад, зеро объекти асосӣ ҳатман намунаи синфи фарзӣ нест. Одатан талаб мекунад тағйирёбии ошкоро ва санҷиш.

Animal animal = new Dog();
Dog dog = (Dog)animal; // DownCast — тағйирёбии ошкоро

Animal anotherAnimal = new Animal();
Dog anotherDog = anotherAnimal as Dog; // Агар тағйирёбӣ имконнопазир бошад, null бармегардонад

Бинобар ин, UpCast барои умумӣ кардан истифода мешавад, ва DownCast барои муайян кардани намуд бо санҷиши бехатарӣ.