• Что такое compile time?

    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". Таким образом можно создать объект типа, которого вообще не было во время компиляции - например, тип был объявлен в отдельной библиотеке и добавлен в программу после компиляции (так делаются плагины, например). Но для плагинов код будет посложнее.
    Ответ написан
    Комментировать
  • Что такое compile time?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Compile time - это значит "во время компиляции".
    Тоесть в результате в программу должен быть зашит результат.

    Что именно хочет составитель задания, и как он себе это представляет - без понятия.
    Ответ написан
    Комментировать
  • Что такое compile time?

    GavriKos
    @GavriKos
    На этапе разработки вы не знаете площадь чего вычисляете.
    Ответ написан
    2 комментария
  • Что такое compile time?

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если тебе нужна библиотека классов, в которой есть только метод, который вычисляет площадь треугольника, то лучше сделать статический класс со статическим методом:
    public static Triangle {
      public static double CalculateArea(double length0, double length1, double length2) {
        // Весь код по вычислению площади
      }
    }

    Функция Print тебе в библиотеке совершенно не нужна.
    Ответ написан
    6 комментариев