Есть ли любые издержки к использованию следующего sytax:
Form1 myForm = new Form1();
myForm.Show();
В противоположность:
Form1 myForm;
myForm = new Form1();
myForm.Show();
То, когда я изучал VB6, мне сказали, делая quivelent в VB, имело издержки - действительно ли то же верно в.NET?
Нет разницы в .Net.
Но в VB6 As New
было зло. Он имел особое значение : он создавал автоматически создаваемую переменную. Вы никогда не сможете получить исключение с нулевой ссылкой с этими переменными. Среда выполнения VB6 автоматически создаст для вас новый экземпляр объекта.
Dim x As New Foo
x.Bar = 10 ' creates a new Foo '
Set x = Nothing ' destroys the first Foo'
x.Bar = 20 ' NO ERROR - creates a second Foo '
Такое поведение считалось злом большинством здравомыслящих программистов: и мы избегали как нового
, как чумы.
Но в VB.Net (и C #) нет разницы между Dim x As New Foo
и Dim x As Foo: Set x = New Foo
В этом примере вы создаете переменную [myForm ] типа Form1 и выделить ему память при создании.
Form1 myForm = new Form1();
В этом примере первая строка создает переменную типа Form1, но для этого объекта myForm не выделена память.
Form1 myForm;
Затем вторую строку можно использовать всякий раз, когда вам нужен новый экземпляр типа Form1 [в этот момент память будет выделена для объекта myForm].
myForm = new Form1();
На мой взгляд, это действительно хорошая практика - объявлять все свои переменные для этих типов, а затем, когда вам нужен живой экземпляр, вы можете сделать свой ... obj = new Foo1 ();
{{1 }}Результирующий байт-код при компиляции в режиме выпуска (и, вероятно, в режиме отладки) будет таким же.
Вы только в последнем случае отделили объявление от экземпляра. Существенного влияния это не оказывает. Я где-то читал, что создание экземпляра объекта .Net занимает 0,000007 секунды, поэтому это вряд ли имеет значение, хотя рекомендуется создавать экземпляр объекта только тогда, когда это необходимо, и удалять, когда он не нужен или кеширование не требуется ..
Я сомневаюсь, что есть, но даже если бы это было, накладные расходы на производительность были бы настолько незначительны, что не было бы ощутимой выгоды от выбора одного из них над другим.