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

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

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

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

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

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

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


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

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

13   голосов , оценка 3.769 из 5
Похожие ответы