juste curieux. J'ai environ 99,999% sûr il n'y en a pas ... mais n'importe quoi? P>
Edit: Ce sont des réponses OK (enregistrement de l'heure de taper ou rendre le code moins verbeux pour "lisibilité"). Je suppose que j'aurais dû clarifier ce que je voulais dire par "utiliser" - une construction / design qui ne pouvait pas être fait sans "var". p>
11 Réponses :
J'utilise Il ne pose pas de problème pour moi parce que mes méthodes sont généralement nommé de manière à ce que, en prenant un coup d'œil sur le nom, je peux déduire le type. P> et si je ne peux pas, je vais utiliser le vs 2008 Intellisense pour m'aider, ou je viens de Utilisez RESHARPER var => Convertisseur de noms de classe pour le convertir en nom explicite. P> Un autre cas, je trouve une excellente utilisation de var code> tout le temps-- surtout lorsque le nom de la classe est très long fort>. var code> est dans un foreach code> boucle: p>
rien comme des noms de classe longue pour ruiner votre journée ... TableLayOntPanel Code> et TableLayOntPanELCellposition Code> Presque désactivé mes mains de retour dans la journée
Quoi de mieux en termes de lisibilité? ou P> var obj = new AReallyReallyLongBusinessObjectName();
Encore plus, lorsque vous utilisez des types génériques.
J'ai deviné autant (sucre syntaxique). Comment écrir-vous le code ci-dessous sans Var, cependant? ------- Var Sous-secteur = de i en numéros où .... foreach (var i in sous-ensemble) {---
En supposant que les numéros contiennent des INTS puis vous feriez ceci: iNeumable
droit! Je regardais dans la mauvaise direction à la recherche d'une classe WhayRayiteratorator. Merci!
Cela indique que votre conception et votre nommage sont fausses, et non que vous devriez utiliser var code>.
Cela peut être tel que, mais je ne dis pas que vous devrait i> utiliser var, plutôt que je donne un exemple de meilleure lisibilité en utilisant Var. En tout état de cause, je dirais que pour tout ce que le nom de la classe d'objets est, l'instanciation d'un var est plus lisible.
@silky pense à des situations où vous devez utiliser des génériques avec un nom de classe de taille modérée. La ligne d'initialisation peut facilement être très longue sans i> en utilisant des conventions de nommage et de conception médiocres. Même si le nom de la classe de base est court, d'autres choses peuvent faire de la déclaration.
Oui, je l'utilise tout le temps en créant des objets pour la classe avec nom long et dans Une autre restriction majeure de var est que vous ne pouvez pas l'utiliser comme paramètre de méthode fort> ou comme type de retour fort>. Vous ne pouvez même pas le déclarer comme champ en classe. Cela signifie que nous pouvons utiliser var juste pour enregistrer l'heure de taper ou rendre le code moins verbeux pour "lisibilité" et avec linq p> foreach code> boucle p>
Je l'utilise dans foreach code> des boucles très souvent:
Vous pouvez utiliser Var pour Linq? C'est à peu près la seule façon dont je l'utilise.
@Spence: Vous pouvez utiliser var code> pour les types anonymes qui se posent généralement lorsque vous utilisez LINQ.
La satire est très difficile à projeter dans un forum. Acclamations pour la pointe;)
C'est très gênant, car il n'est pas évident que le type que article code> est. Vraiment ne pas recommander cette approche.
Dans une application simple, cela est complètement correct. Et comme nous continuons de près du principe de responsabilité unique, chaque méthode est une portée simple ;-)
C'est parfaitement valide et cela vous fait économiser à partir de l'exception:
Je trouve personnellement que cela peut blesser la lisibilité lorsqu'il est utilisé pour réduire la frappe - N'oubliez pas que vous dépensez 1% de votre temps à écrire le code et 99% du temps le lisant. P> edit: stricte> La principale chose à retenir (et cela est commun à toutes les questions de style de codage) est que vous devez choisir un style et l'utiliser de manière cohérente. Tant que vous l'aimez et que vous ayez une raison de l'utiliser que vous ressentez du son, vous avez gagné la bataille :) p> p> var code> est principalement utile pour les types anonymes (vous ne pouvez en créer un sans elle). J'ai également vu d'autres l'utilisent pour réduire les informations de type de type et de type redondantes par le biais d'une inférence de type.
D'accord mais uniquement lorsqu'il est utilisé avec des méthodes telles que votre exemple, mais pas lors de la création de nouveaux objets ou d'utiliser des méthodes communément connues telles que certaines des nouvelles extensions où (), tout (), premier (), etc ...
Avoir des noms de méthodes significatifs et simplement inspecter le code environnant donnerait une idée, mais à la fin de la journée, je suppose que cela revient à la préférence personnelle.
var foo = dialogue (); Dim Foo = Dosomething (); "Jure que j'ai vu cela quelque part ... Avant de me déchirer la tête, je comprends que celles-ci signifient différentes choses, mais vb.net se frottent sur c #, bien que lentement
+100 pour le commentaire de 1% / 99%. Ce problème est particulièrement mauvais lorsque vous utilisez var code> avec des méthodes qui renvoient des types numériques. Vous pouvez facilement vous retrouver int code> maths lorsque vous pensez que vous faites float code> maths.
@Spence: Vous frappez le clou droit entre les yeux avec votre commentaire. Je suis allé la vb (3-6) -A-C # itinéraire, et cela me fait pleurer de voir ce genre de choses à revenir (et d'être salué comme "progrès"). Ne me faites pas commencer sur dynamique code>.
@Musigenèse: var! = Variante code>, dynamique! = Variante code>! Chacun de ces ( var code> et dynamique code>) ont leurs utilisations. Ils peuvent être maltraités, mais la construction de la programmation peut-elle. Certains sont particulièrement sujettes à la maltraitance ( goto code>) mais les avantages que var code> et dynamique code> fournir dans certaines situations dépassent de loin les négatifs qui découlent d'abus, la paresse et la mauvaise application.
La dynamique est une étape énorme en avant pour les deux Interop et DLR Interop. Cependant, je pense que cela a un potentiel d'abus massif si utilisé de manière incorrecte. Toute personne qui a essayé de porter le code Office de VB.NET à C # saura de quoi je parle. Lier une touche de raccourci pour taper Ref manquant pour vous 27 fois pour que chaque appel de panne soit le genre de chose que vous ne voulez jamais faire à nouveau.
@Jason: ( var code> == variante code>)! = Mon point. De toute évidence, il existe des différences entre les constructions, mais l'une des utilisations les plus courantes de var code> conduit à la même classe d'erreurs que variante code> produit. Et même variante code> fourni des prestations dans certaines situations.
Que diriez-vous de classes anonymes?
Yup, mais quelle conception / construction nécessiterait cela?
Mon utilisation préférée sans linq est en conjonction avec foreach code>. Spécification du type indique explicitement le compilateur de faire une coulée si nécessaire (ce qui pourrait entraîner une erreur d'exécution), tout en utilisant simplement var code> est un moyen simple de vous assurer que j'ai vraiment le type d'article que je pense avoir . p>
Exemple? Si j'ai une collection d'objets, pourquoi voudrais-je pouvoir interagir avec eux par une autre manière plutôt qu'une interface commune?
Je trouve cela inestimable dans le prototypage, cela me permet de stocker rapidement les résultats des fonctions / des propriétés et me permet également d'ajuster les types de retour de ces fonctions avec moins de nettoyage. C'est un (Wee) peu comme une interface pour les méthodes, cela me permet de m'inquiéter moins sur les types de retour concrets et plus sur l'intention de la méthode.
Comme d'autres personnes ont mentionné, il est également agréable d'utiliser lors de l'initialisation des nouvelles instances d'objets ; avoir vs. p> foo foo = nouveau foo (); code> est redondant. var foo = nouveau foo (); code> est tout aussi lisible, encore meilleur s'il y a plusieurs déclarations ... p>
Lorsque vous utilisez MVC et que vous avez un contrôleur client pour renvoyer toutes vos demandes AJAX, vous allez toujours toujours utiliser un var, car avec un type anonyme, vous ne pouvez envoyer que les données nécessaires à la demande au client.
var response = new { var1 = "bla", var2 = "foo" };
return JSon(response);
Nope, c'est juste être paresseux ne pas déclarer Var1 et Var2 comme des cordes, non?
Non Ceci crée un objet JSON avec Var1 et Var2 en tant que propriétés. Rien à voir avec paresseux. Je pourrais créer cet objet d'une entité commerciale qui contient trop d'informations pour mon client F.e.
Yup, mais comme avec les autres réponses, ce n'est que du sucre syntaxique. Vous pouvez implémenter ce mot-clé Var, non?
Ce n'est que si vous souhaitez créer une classe d'objet pour tout ce que vous renvoyez au client, ce qui n'a pas de sens, car vous ne l'émettez pas comme JSON qui ne se soucie pas de vous avoir une véritable classe ou non.
Je ne vais pas vous mal comprendre :) Vous venez de décrire un sucre syntaxique.
J'ai lu quelque part qu'il est recommandé d'utiliser "var" dans les cas où vous appelez le code dans un module non écrit par vous et qui renvoie un objet de type qui est soumis à des modifications futures. Si vous deviez écrire une enveloppe sur ce module externe et que vous feriez uniquement le résultat que d'utiliser Var pour stocker temporairement, votre code rendrait votre code toujours valide si / lorsque le type de données renvoyé par les modifications apportées à l'appel externe. En outre, si vous savez que ce résultat est une sorte de collection, mais encore une fois, pas d'une sorte particulièrement stable, l'affectation à Var puis itération pourrait toujours fonctionner en cas de changement supplémentaire. P>
Cela ne fonctionnera pas. var code> est juste du sucre syntaxique. Cela ne fait pas le type anonyme. Dès que vous devez effectuer des opérations avec la variable, vous allez devoir travailler dans un type spécifique. Même si vous écrivez simplement un wrapper, vous devez définir le type de retour pour votre méthode d'emballage car var code> ne peut pas être utilisé dans les signatures de méthode. Il peut apporter des changements rapides un peu plus faciles, car si vous modifiez un type de données, vous avez un endroit moins élevé pour le changer, mais c'est à ce sujet.
J'utilise Var pour presque chaque affectation à une variable locale. Cela limite vraiment la quantité de modifications de code que je dois apporter si les changements de type de retour de la méthode de particulier. Par exemple, si j'ai la méthode suivante:
var list = GetList();
Question similaire Stackoverflow.com/questions/633474/c-do-you-Utilisation-var
Juste un commentaire aux intervenants et aux commentateurs se plaignant de Var et dynamique. Ce sont des fonctionnalités que vous n'avez pas à utiliser. Cesser de se plaindre.
Var est mauvais et doit être évité car lorsque vous écrivez du code, vous ne devriez pas vous sentir paresseux d'écrire un nom d'objet très long, mais vous devez l'écrire comme il sera toujours perçu par vous ou pour toute personne qui lit le code plus tard.
Var est mauvais si maltraité, tout comme n'importe quelle caractéristique de toute langue informatique.
Dupliqué possible de Utilisation du mot-clé Var en C #