Sobes.tech
Middle

Фарқияти байни var ва dynamic дар C# чист?

sobes.tech AI

Ҷавоб аз AI

променливии var барои типгузории ғайримустақимии тағйирёбандаҳои маҳаллӣ истифода мешавад. Компилятор намудро дар марҳилаи компиляция муайян мекунад.

dynamic барои кор бо объектҳое истифода мешавад, ки намудашон танҳо дар вақти иҷро маълум аст. Санҷиши намуд ва даъвати методҳо дар вақти иҷро сурат мегирад.

Хусусият var dynamic
Типгузорӣ Статикӣ (дар вақти компиляция) Динамикӣ (дар вақти иҷро)
Тасдиқи намуд Дар вақти компиляция Дар вақти иҷро
Камаротибӣ Баланд (намуни муайяншуда) Нисбатан паст (анализ дар вақти иҷро зарур аст)
Маҳдудиятҳо Танҳо барои тағйирёбандаҳои маҳаллӣ Барои тағйирёбандаҳо, майдонҳо, хосиятҳо, параметрҳо
Барнома Ҳайратангез, кӯтоҳ кардани код Взаимод бо COM, DLR, Reflection

Масалан бо var:

// Компилятор муайян мекунад, ки x навъи int аст
var x = 10;
// Хатои компиляция, зеро x ҳамчун int муайян шудааст
// x = "салом";

Масалан бо dynamic:

// Навъи y дар вақти иҷро муайян мешавад
dynamic y = 10;
// Ҳеҷ хатои компиляция нест, зеро санҷиш дар вақти иҷро сурат мегирад
y = "салом";
// Даъвати метод, ки мумкин нест вуҷуд дошта бошад; хатогӣ метавонад дар вақти иҷро рӯй диҳад
// y.НамудМетод();