À la lumière de cette question, je pensais que ça serait vraiment bien d'avoir une question similaire à propos de C#/.Net.
Donc, ce qui est le plus délicat ou trompeuse nom de la méthode de l' .Net et/ou de l'API C#?
À la lumière de cette question, je pensais que ça serait vraiment bien d'avoir une question similaire à propos de C#/.Net.
Donc, ce qui est le plus délicat ou trompeuse nom de la méthode de l' .Net et/ou de l'API C#?
Je pense que tous les DateTime
méthodes en commençant par Add
sont trompeuses, considérant DateTime
est immuable struct et ne peut pas être changé (ces méthodes retournent des valeurs reflétant l'ajout).
Donc:
DateTime.Add
DateTime.AddTicks
DateTime.AddMilliseconds
etc.
J'y serais allé avec:
DateTime.Plus
DateTime.PlusTicks
DateTime.PlusMilliseconds
etc.
Sans doute le même est vrai de certains string
méthodes, telles que l' string.Replace
; mais je ne sais vraiment pas quoi d'autre vous appelle.
Certains ont objecté que, depuis le comportement de l'opérateur d'addition (+
) pour les valeurs numériques est intuitive (et ne modifie pas la valeur de l'instance), l' DateTime.Add
(*) les méthodes ne sont pas moins intuitive. Voici ma réponse à cette question.
Permettez l'expression de cette opposition:
Vous n'avez pas s'attendre à ce que
i + 5
modifiei
, alors, pourquoi pensez-vous qu'd.Add(t)
est - il différent?
Maintenant, nous allons répéter cette même question, mais avec des mots anglais à la place de code:
Vous ne vous attendez pas que je plusde 5 modifie - je, alors pourquoi voudriez-vous que d ajouter t est-il différent?
Voyez ce que je veux dire?
Wow, si vous voulez voir l'une des plus longues commentaire threads jamais sur une SORTE de question (que j'ai vu, de toute façon), il suffit de faire une charge de commentaires pour cette réponse. Apparemment, l'idée que le mot Add
suggère la mutabilité est beaucoup plus subjectif que je ne le pensais.
Une réponse: l' IList<T>.IsReadOnly
vs IList.IsReadOnly
. Le sens n'est pas clair du tout, et il s'avère que ces deux propriétés ont des significations différentes. :)
Le blog que j'ai créé est résumée ici:
Il existe deux types de mises à jour:
Pour IList
La valeur de IsReadOnly est faux si soit le type de mise à jour est autorisé. Il n'est définie sur true si les deux types de les mises à jour ne sont pas autorisés.
mais pour l' IList<T>
[IsReadOnly] devrait être vrai si l' type de mise à jour n'est pas autorisé. Il est seulement la valeur false si les deux types de mises à jour sont autorisés.
Ce n'est pas une méthode, mais protected internal
a fait beaucoup de victimes.
Beaucoup de gens (toux la toux), d'abord attendre que cela signifie que uniquement les types dérivés dans l'actuelle assemblée peut accéder à la partie, mais il permet réellement les types dérivés dans toute l'assemblée et de tout type dans l'actuelle assemblée de l'accès du membre.
Eric Lippert explique pourquoi il en est éminemment raisonnable dans son blog ici (merci Brian pour le lien!). C'est juste une honte, c'est ambigu.
Voici un grand classique: le Chemin d'accès.GetInvalidPathChars, qui "est pas garanti pour contenir l'ensemble des caractères qui ne sont pas valides"
L' Reverse
méthode d'extension est étrangement nommé, à mon avis. Pourquoi? Parce qu' List<T>.Reverse
existe déjà, et il renverse l'ordre de la liste elle-même. L' Reverse
méthode d'extension, sur l'autre main, énumère plus de tout IEnumerable<T>
vers l'arrière.
Je l'ai appelé, il Backwards
, peut-être (ou même Reversed
, avec un "d"). Qui n'aurait pas implicite d'effectuer toute modification de la liste. En Plus de cette façon, si je voulais énumérer plus d'un List<T>
vers l'arrière que je pourrais appeler:
myList.Backwards()
au lieu de:
((IEnumerable<T>)myList).Reverse()
ou:
myList.AsEnumerable().Reverse()
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.