Je regardais quelques exemples de code c# et remarqué qu’un exemple enveloppé le retour dans ()'s.
J’ai toujours tout fait :
Y a-t-il une différence faisant :
Je regardais quelques exemples de code c# et remarqué qu’un exemple enveloppé le retour dans ()'s.
J’ai toujours tout fait :
Y a-t-il une différence faisant :
Mise à JOUR: Cette question a été l'objet de mon blog le 12 avril 2010. Merci pour ce drôle de question!
Dans la pratique, il n'y a pas de différence.
En théorie, il pourrait y avoir une différence. Il y a trois points intéressants dans la spécification C# où cela pourrait présenter une différence.
Tout d'abord, la conversion des fonctions anonymes, de déléguer des types et des arbres d'expression. Considérez les points suivants:
Func<int> F1() { return ()=>1; }
Func<int> F2() { return (()=>1); }
F1
est clairement juridique. Est - F2
? Techniquement, pas de. La spec dit dans la section 6.5, qu'il y a une conversion à partir d'une expression lambda compatibles type de délégué. C'est qu'une expression lambda? Pas de. C'est une mise entre parenthèses de l'expression qui contient une expression lambda.
Visual C# compilateur fait une petite spec violation d'ici et les rejets de la parenthèse pour vous.
Deuxième:
int M() { return 1; }
Func<int> F3() { return M; }
Func<int> F4() { return (M); }
F3
est légal. Est - F4
? Pas de. La Section 7.5.3 indique qu'une mise entre parenthèses de l'expression ne peut pas contenir une méthode de groupe. Encore une fois, pour votre confort, nous violer la spécification et de permettre la conversion.
Troisième:
enum E { None }
E F5() { return 0; }
E F6() { return (0); }
F5
est légal. Est - F6
? Pas de. La spécification précise qu'il n'y est une conversion de l'littéral de zéro à n'importe quel type énuméré. "(0)
" n'est pas la traduction littérale de zéro, c'est une parenthèse suivi de la lettre zéro, suivi d'une parenthèse. Nous violer la spécification ici, et permettent à tout moment de la compilation expression constante égale à zéro, et pas seulement littérale de zéro.
Donc dans tous les cas, nous vous permettons de sortir avec elle, même si, techniquement, cela est illégal.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.