Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Embedded statement cannot be a declaration or labeled statement

I am trying to create a user using claim identity asp.net I get this error while creating claims identity user.

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

but when the code was

var user= new ApplicationUser {                               UserName = model.myUser.Email,                             Email = model.myUser.Email ,                          }; 

it worked perfectly, so i want to know what is wrong

like image 403
husseinbaalbaki Avatar asked Jul 14 '16 12:07

husseinbaalbaki


2 Answers

You have a statement (if or while, for example), right before the code you posted, without curly braces.

For example:

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

is correct, but the code below:

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

will result in CS1023: Embedded statement cannot be a declaration or labeled statement.

UPDATE

The reason, according to @codefrenzy, is that the newly declared variable will immediately go out of scope, unless it is enclosed in a block statement, where it can be accessed from.

The compilation will pass in the following cases though.

If you only initialize a new instance of a type, without declaring a new variable:

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

or if you assign a value to an existing variable:

ApplicationUser user;  if (somethingIsTrue)     user = new ApplicationUser {         UserName = model.myUser.Email,        Email = model.myUser.Email ,    }; 
like image 152
felix-b Avatar answered Oct 02 '22 14:10

felix-b


I just had this error, and the fix was to add a curly brace to the if immediately preceding my code, and then remove it again. Visual Studio facepalm OTD.

like image 25
Mel Padden Avatar answered Oct 02 '22 15:10

Mel Padden