Назад к вопросам
Junior
202
questionbank
В чем разница между неизменяемостью final и const в Dart?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Основное различие в следующем:
final: Переменная, помеченная какfinal, может быть инициализирована только один раз. Ее значение определяется во время выполнения (runtime) и не может быть изменено после присваивания.
void main() {
final int myFinalValue = 10; // Инициализируется во время выполнения при создании
// myFinalValue = 20; // Ошибка: Нельзя присвоить новое значение final переменной
print(myFinalValue);
}
const: Переменная, помеченная какconst, является compile-time константой. Ее значение должно быть известно во время компиляции и не может быть изменено в дальнейшем. Объекты, помеченные какconst, создаются только один раз и используются совместно (shareable).
void main() {
const int myConstValue = 5; // Значение известно во время компиляции
// myConstValue = 15; // Ошибка: Нельзя присвоить новое значение const переменной
print(myConstValue);
const List<int> constList = [1, 2, 3]; // const список - неизменяемый
// constList.add(4); // Ошибка: Нельзя изменить const список
}
Вот краткая сводка различий:
| Характеристика | final |
const |
|---|---|---|
| Инициализация | Во время выполнения | Во время компиляции |
| Изменяемость значения | Неизменяемое после присвоения | Неизменяемое |
| Время определения | Runtime | Compile-time |
| Создание объектов | При каждом выполнении кода | Один раз, используются совместно |
| Применимость | Для переменных и членов класса | Для переменных и значений |