Non en lecture seule alternative pour les types anonymes

En C#, un type anonyme peut être comme suit:

method doStuff(){
     var myVar = new {
         a = false, 
         b = true
     }

     if (myVar.a) 
     {
         //Do stuff             
     }
}

Cependant, le suivant ne compile pas:

method doStuff(){
     var myVar = new {
         a = false, 
         b = true
     }

     if (myVar.a) 
     {
         myVar.b = true;
     }
}

C'est parce que myVar les champs sont en lecture seule et ne peuvent être cédés. Il semble vouloir faire quelque chose comme ce dernier est assez commun; peut-être la meilleure solution que j'ai vu est de définir une structure en dehors de la méthode.

Cependant, est-il vraiment pas d'autre façon de faire le bloc ci-dessus travail? La raison pour laquelle il me dérange, c'est, myVar est une variable locale de ce domaine, de sorte qu'il semble qu'il ne devrait être appelé à l'intérieur de la méthode qui l'utilise. En outre, besoin de place la structure en dehors de la méthode peut faire la déclaration d'un objet très éloigné de son utilisation, en particulier dans une longue méthode.

Mettre une autre manière, est-il une solution de rechange pour les types anonymes qui va me permettre de définir un "struct" comme ceci (je me rends compte struct existe en C#, et doit être définie en dehors d'une méthode) sans en faire lecture seule? Si non, est-il quelque chose de fondamentalement mauvais vouloir pour ce faire, et que je devrais être en utilisant une approche différente?

  • Les types anonymes sont conçus, pour une fois seulement, une utilisation rapide. Si votre utilisation est plus compliqué que cela, il y a tous les readsons pour créer un type nommé.
InformationsquelleAutor Superbest | 2012-01-28