web-dev-qa-db-fra.com

Une déclaration incorporée ne peut pas être une déclaration ou une déclaration libellée

J'essaie de créer un utilisateur à l'aide de claim identity asp.net Je reçois cette erreur lors de la création de l'utilisateur identity.

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

mais quand le code était 

var user= new ApplicationUser { 

                            UserName = model.myUser.Email,
                            Email = model.myUser.Email ,

                        };

cela a fonctionné parfaitement, donc je veux savoir ce qui ne va pas

36
husseinbaalbaki

Vous avez une déclaration ( si ou while , par exemple), juste avant le code que vous avez posté, sans accolades.

Par exemple:

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

est correct, mais le code ci-dessous:

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

se traduira par CS1023: L'instruction incorporée ne peut pas être une déclaration ou une instruction étiquetée.

METTRE À JOUR

Selon @codefrenzy, la raison en est que la nouvelle variable déclarée sera immédiatement hors de portée, sauf si elle est incluse dans une instruction de bloc, d'où elle peut être consultée. 

La compilation passera dans les cas suivants cependant.

Si vous initialisez seulement une nouvelle instance d'un type, sans déclarer une nouvelle variable:

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

ou si vous affectez une valeur à une variable existante:

ApplicationUser user;

if (somethingIsTrue) 
   user = new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };
92
felix-b

Je viens d'avoir cette erreur, et le correctif consistait à ajouter une accolade à si immédiatement avant mon code, puis à le supprimer. Visual Studio facepalm OTD.

0
Mel Padden