Синтаксис написания вашего кода:
MyMethod mm = new MyMethod();
это на самом деле только короткая форма письма
MyMethod mm;
mm = new MyMethod();
Где в первой строке вы указываете тип переменной, которую вы хотите использовать ( объявление ), и указываете среде выполнения, что ей потребуется выделить для нее память, а во второй строке вы присваиваете фактическое значение для него ( определение ).
[Изменить]
В первой строке становится очевидным, что вам понадобится , чтобы указать тип переменной, иначе вы бы сократили строку до определения только name переменной и компилятор не будет знать что это:
mm;
[/ Изменить]
Как и другие, уже размещенные здесь, разделение на 2 удобно, если вам нужна та же переменная во вложенных областях. В примере кода, который вы дали во вступительном посте, конечно, это не понадобится, поскольку вы определяете переменную в той же области, где она необходима.
[Редактировать 2]
Подумайте об определении переменной MyMethod mm = new MyMethod();
как переменной, как любой другой. Компилятору все равно, если вы делаете это в классе MyMethod
или в любом другом классе.
Если бы ваш код выглядел так, было бы более очевидно, что между различными типами OtherClass
и MyMethod
.
нет никакой связи.
using System;
class OtherClass
{
public static void Main()
{
string myChoice;
MyMethod mm = new MyMethod();
}
}
Использование переменной, которая имеет того же типа , что и окружающий класс - как вы это делали в своем собственном примере - совершенно законно, но не является " self ссылаться на"таким образом, чтобы вы могли опустить тип. Это просто простая переменная в области действия метода Main
, имеющая совпадающий тип.