Что это было? public Foo MyFoo { get; set; } // в не абстрактном классе, не абстрактное - C#

Узнай цену своей работы

Формулировка задачи:

Вобщем, жили мы долго и счастливо, сначала на С++ потом на С#, но на С# писали код имея в виду, что, может, он пригодится в старых проектах на С++, т.е. консервативно. Типы переменных все объявляли явно, LINQ только там где он вправду нужен. И вот является товарищ из Ирана с опытом на JS и давай писать везде var. Ну, думаю, ладно, пианист играет как умеет, а этот код, вроде, на С++ никогда не надо будет переводить. А вчера гляжу его код и вижу такую, блин, конструкцию...
Листинг программы
  1. class A{
  2. public List<TypeBar> Bar{ get; set; }
  3. // тут нет конструктора, то есть, все равно, что есть конструктор public A(){}
  4. }
Класс не абстрактный, член не абстрактный. А компилятор это спокойно ест. Дальше еще хуже... В коде, который пользует этот класс:
Листинг программы
  1. ...
  2. var bar = GetBar(); // Эта функция возвращает значение типа List<TypeBar> - все честно
  3. ...
  4. // А дальше тихий ужас
  5. var a = new A { Bar = bar; }
Че это за фигня? Компилятор создает в полете новый конструктор, который еще и видит местные переменные? Че делать? Ну, или:
Листинг программы
  1. class A{
  2. public TypeBar Bar;
  3. }
  4. // И
  5. class A {
  6. public TypeBar Bar { get; set; }
  7. // Это одно и то же или нет??? Компилятор одинаковый код генерирует, или нет???
  8. }
Заранее спасибо.

Решение задачи: «Что это было? public Foo MyFoo { get; set; } // в не абстрактном классе, не абстрактное»

textual
Листинг программы
  1. public int x {get; set;} // Ага, это для инициализаторов, что-ли?

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы