Фон
В настоящее время, если я хочу создать new
объект в C # или Java, я набираю что-то похожее на следующее:
List<int> listOfInts = new List<int>(); //C#
ArrayList<String> data = new ArrayList<String>(); //Java
C # 3.0 стремился улучшить краткость, реализуя следующую хитрость компилятора:
var listofInts = new List<int>();
Вопрос
Поскольку компилятор уже знает, что я хочу создать новый объект определенного типа (из-за того, что я создаю его экземпляр, не присваивая ему ссылку null
или назначая конкретный метод для его создания), то почему я не могу сделать следующее?
//default constructors with no parameters:
List<int> listOfInts = new(); //c#
ArrayList<String> data = new(); //Java
Последующие вопросы:
- Каковы возможные подводные камни этого подхода. Какие крайние случаи я мог пропустить?
- Существуют ли другие способы сократить время создания экземпляров (без использования VB6-esque
var
) и при этом сохранить значение?
ПРИМЕЧАНИЕ. Одним из основных преимуществ, которые я вижу в такой функции, является ясность. Пусть скажем, вар не был ограничен. Для меня это бесполезно, оно собирается получить назначение справа, так зачем беспокоиться? Новый () для меня на самом деле сокращает его и дает смысл. Это новый () то, что вы объявили, что для меня будет ясным и кратким.