クレームID asp.netを使用してユーザーを作成しようとしています。クレームIDユーザーの作成中にこのエラーが発生します。
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 ,
};
それは完璧に機能したので、何が間違っているのか知りたい
投稿したコードの直前に、中括弧なしのステートメント(ifまたはwhileなど)があります。
例えば:
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 ,
};
このエラーが発生したばかりで、修正はコードの直前のifに中括弧を追加してから、再度削除することでした。 Visual Studio facepalm OTD。