Что это было? 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;} // Ага, это для инициализаторов, что-ли?
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д