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