Встроенный оператор не может быть объявлением или помеченной инструкцией

Я пытаюсь создать пользователя, использующего идентификатор претензии asp.net Я получаю эту ошибку при создании пользователя идентификационной информации.

  ApplicationUser user = new ApplicationUser { 
                        EmailConfirmed = true, 
                        UserName = model.myUser.Email,
                        Email = model.myUser.Email ,
                        PhoneNumber = model.myUser.PhoneNumber,
                        PhoneNumberConfirmed = true,
                        UserImagePath = model.myUser.UserImagePath,
                        FirstName= model.myUser.FirstName,
                        LastName = model.myUser.LastName,
                        DateOfBirth = model.myUser.DateOfBirth,
                        Culture = model.myUser.Culture,
                        Role = model.myUser.Role
                    };

но когда код был

var user= new ApplicationUser { 

                            UserName = model.myUser.Email,
                            Email = model.myUser.Email ,

                        };

он работал отлично, поэтому я хочу знать, что не так.

Ответы

Ответ 1

У вас есть оператор (, если или в то время как, например), прямо перед отправленным вами кодом, без фигурных скобок.

Например:

if (somethingIsTrue) 
{    
   var user= new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };
}

верен, но код ниже:

if (somethingIsTrue) 
   var user = new ApplicationUser { 
      UserName = model.myUser.Email,
      Email = model.myUser.Email ,
   };

приведет к CS1023: оператор Embedded не может быть объявлением или помеченной инструкцией.

UPDATE

Причиной, по словам @codefrenzy, является то, что вновь объявленная переменная сразу выйдет за пределы области видимости, если только она не заключена в оператор блока, откуда к ней можно получить доступ.

Компиляция будет проходить в следующих случаях.

Если вы только инициализируете новый экземпляр типа, не объявляя новую переменную:

if (somethingIsTrue) 
   new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };

или если вы присвоите значение существующей переменной:

ApplicationUser user;

if (somethingIsTrue) 
   user = new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };

Ответ 2

У меня просто была эта ошибка, и исправление заключалось в том, чтобы добавить фигурные скобки к if, непосредственно предшествующему моему коду, а затем удалить его снова. Visual Studio facepalm OTD.