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.НамудМетод();