Здравствуйте, Danchik, Вы писали:
D>Здравствуйте, nt2000, Вы писали:
N>>Здравствуйте, alexzzzz, Вы писали:
A>>>или нужно получить новое значение value-типа, через конструктор этого типа:
A>>>DateTime dateTime = new DateTime(...);
И все-таки, интересно, почему в некоторых языках используется new?
Ведь он усложняет анализ кода.
На память в делфи Class.Create(), в nim — newPerson(), в немерле Class().
C, C#, и, внезапно, F# — new!
т.е. чтобы пользоваться в F# функциональщиной, нужно делать фабричную функцию:
let date () = new DateTime()
let d = date()
Чисто визуально даже, приятней было бы:
let d = DateTime()
В ди например, это имеет особый смысл, там выражение new(uint size,...)
определяет где будет создан объект(по умолчанию в куче), если же new для локальной переменной функции класса, то на стэке.
можно явно указать new(размер выделяемой памяти), естественно, можно расширять поведение инициализации, явно реализуя метод класса вида: new(uint size,int a, string b).
Но в C# по-моему, нужно было разрешить вызывать конструкторы как статические методы. Это логичнее.