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

Я пытаюсь создать пользователя, используя удостоверение утверждения 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 ,

                        };

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

2 ответов


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

например:

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: встроенный оператор не может быть объявлением или помеченным оператором.

обновление

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

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

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

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 ,
   };

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