@Dapofig

Что такое compile time?

"Вычисление площади фигуры без знания типа фигуры в compile-time". Вот так звучит задание, но сколько бы я его не читал смысла осознать мне мозгов не хватило, а гугл помочь мне не смог. Кому не сложно, можете помочь советом?
  • Вопрос задан
  • 3251 просмотр
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Compile time - выбор в коде, во время компиляции (comple time). То есть, компилятор видит код и понимает, какой тип нужен при создании объекта.
var figure = new Circle(); // тип известен заранее (при компиляции)
Console.WriteLine(figure.CalcArea());


В отличие от compile time. может быть run time - во время работы программы, тип объекта выбирается в зависимости от некоторых условий (ввод пользователя, ответ от сервера, настройки в конфиг-файле, изменилась фаза луны).
Самый простой вариант:
var type = Console.ReadLine();
Figure figure = null;
switch (type.ToLower())
{
    case "square": figure = new Square(10); break;
    case "rectangle": figure = new Rect(10, 20); break;
    case "circle": figure = new Circle(10); break;
}
if (figure != null)
{
    Console.WriteLine(figure.CalcArea());
}
else
{
    Console.WriteLine("Неверный тип фигуры");
}

Выбор делается в рантайме между заранее известными типами - конкретные возможные типы указаны в коде (в компайлтайме).

Реальный тип (имя класса) можно спросить у пользователя (или из настройки), и вызвать его активатором:
var typeName = Console.ReadLine();
var type = Type.GetType(typeName);
if (type != null)
    var figure = (Figure)Activator.CreateInstance(type);
    Console.WriteLine(figure.CalcArea());
}
else
{
    Console.WriteLine("Неверный тип");
}

Но тип должен быть полным, с пространством имён, то есть, не "Square", а "MyApp.Figures.Square". Таким образом можно создать объект типа, которого вообще не было во время компиляции - например, тип был объявлен в отдельной библиотеке и добавлен в программу после компиляции (так делаются плагины, например). Но для плагинов код будет посложнее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka Куратор тега C#
Токсичный шарпист
Compile time - это значит "во время компиляции".
Тоесть в результате в программу должен быть зашит результат.

Что именно хочет составитель задания, и как он себе это представляет - без понятия.
Ответ написан
Комментировать
GavriKos
@GavriKos
На этапе разработки вы не знаете площадь чего вычисляете.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
А что уже вика или гугл не помогает?
Вот прямой запрос по моему там четко разжевано, остались вопросы это больше к вашему экзаменатору что он имел в виду под этим
https://en.wikipedia.org/wiki/Compile_time
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы