2008-11-16 9 views
6

Мне просто интересно, есть ли разница между двумя разными инициализаторами новых объектов или это просто синтаксический сахар.New {object} vs {object} = new {object}

Так:

Dim _StreamReader as New Streamreader(mystream) 

и отличается:

Dim _StreamReader as Streamreader = new streamreader(mystream) 

Есть ли разница под капотом? или они оба одинаковы? Какой из них вы предпочитаете использовать?

ответ

14

В VB.NET они идентичны. Вариант As New является каноническим.

В VB6 их семантика фактически различалась (в отличие от очевидного факта, что VB6 не разрешал назначений в объявлениях): вариант As New создавал бы объект, который никогда не может быть Nothing. Скорее, среда выполнения гарантирует, что объект всегда был правильно инициализирован перед каждым доступом к нему.

1

Я не парень VB, но насколько я могу судить, они эквивалентны. По MSDN's description of the Dim statement:

Если вы не указали тип данных, переменная принимает тип данных инициализаторе. Если не присутствует ни тип данных, ни , то по умолчанию тип данных - тип данных объекта. Если вы указываете оба типа данных и инициализатор , тип данных инициализатора должен быть конвертирован в .

Я не буду передавать комментарий к предпочтению, так как я не использую VB (кроме случаев, когда отвечают заявления).

2

Эти утверждения идентичны. Лично я предпочитаю синтаксис «Dim x as New», потому что он более краткий. Нет причин писать одно и то же имя типа в том же самом заявлении, если оно не делает программной разницы. Все, что он делает, это заставлять вас тратить больше времени на клавиатуру :)

Смежные вопросы