Est-il possible de créer un nouvel opérateur en c#?

Je sais que vous pouvez surcharger un opérateur existant. Je veux savoir si il est possible de créer un nouvel opérateur. Voici mon scénario.

Ce que je veux c':

var x = (y < z) ? y : z;

Être équivalent à ceci:

var x = y <? z;

En d'autres termes, je voudrais créer mon propre <? opérateur.

  • pas de langue de Cette fonctionnalité...
  • Pas vrai. F# a elle comme d'autres l'ont souligné, et C++ a aussi. CoffeeScript propose plusieurs nouveaux opérateurs de sucre syntaxique pour JavaScript, des idiomes, et c'est tellement personnalisable que l'on pourrait décrire comme permettant la personnalisation des opérateurs. Le dernier est un peu délicat, car vous auriez du être techniquement l'extension de la langue.
  • comme mentionné dans CodeProject l'article "C++ prend en charge la surcharge d'opérateur, mais vous n'êtes pas autorisé à créer votre propre des opérateurs" c'est de l'émulation!!
  • Je ne vois pas l'article dont vous parlez, mais la exemple à partir de la roue dentée de la réponse (sur la question, je me suis lié d') résultats dans le code qui fonctionne exactement comme les exploitants. Si oui ou non ils sont cuits dans la langue, vous pouvez les faire travailler. De toute façon, votre déclaration (qu'aucune langue n'a cette capacité) n'est pas valide pour F#.
  • En Scala, il serait implicit class <?(y: Int) { def <?(z: Int) = y min z } -- l'implicite de la classe pour ajouter une méthode à Int, puis la méthode elle-même. Cette méthode ne fonctionne pas car <? est un xml-start mot-clé.
  • Je parle de This Artical
  • Même si c'était possible, je ne pense pas que ce serait une bonne idée. C'est beaucoup moins lisible qu'une méthode, par exemple Min(y, z).
  • Haskell est entièrement définie par l'utilisateur opérateurs autant que je sache.
  • Overloadable Opérateurs (Guide de Programmation C#)
  • J'aimerais également pour ce faire. Ce qui sur un opérateur d'attribuer b à a mais seulement quand a est déjà en manque une valeur. par exemple a ??= b; ne Peut pas être fait avec autant d'élégance avec une méthode
  • Ruby a quelques astuces qui sorta vous permettent de faire cela: stackoverflow.com/questions/11874579/...

InformationsquelleAutor Aaron Palmer | 2009-06-24