我正在尝试使用声明身份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 ,
};
它工作得很好,所以我想知道出了什么问题
答案 0 :(得分:100)
您在发布的代码之前有一个声明(例如,如果或,而),没有大括号。
例如:
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,原因是新声明的变量将立即超出范围,除非它被包含在块语句中,可以从中进行访问。
编译将在以下情况下通过。
如果只初始化类型的新实例,而不声明新变量:
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 ,
};
答案 1 :(得分:0)
我刚刚遇到此错误,修复方法是在我的代码前面添加一个花括号,然后再将其删除。 Visual Studio facepalm OTD。