none
Conversion implicite object To string RRS feed

  • Discussion générale

  • Bonjour,

    Que diriez vous sur l'idée que Microsoft devrait permettre une conversion implicite de tout objet vers string (ToString()) :

    Ajouter la méthode suivante au type string

            public static implicit operator string(object obj)
            {
                if (obj == null)
                {
                    return null;
                }
    
                return obj.ToString();
            }

    ça permet d'éviter d'appeler la méthode ToString() dans beaucoup d'endroit dans le code, en plus ça s'inscrit parfaitement dans l'esprit de la méthode object.ToString() : Microsoft prévoit déjà que tout objet est convertible en string. On ne fait donc que renforcer l'abstraction.

    Dommage que le concept d'extension ne permet pas ce genre d'opération.

    Cordialement.

    jeudi 29 novembre 2012 11:18
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    Je n'ai pas l'impression de le faire si souvent que cela ? Cela donnerait quoi par exemple avec une inférence de type ? Je voudrais plus voir le code qui utiliserait cette conversion implicite.

     A première vue, cela me semblerait poser problème pour un bénéfice qui ne me parait pas flagrant. Notamment MS recommande : "<sentencetext xmlns="http://www.w3.org/1999/xhtml">En général, les opérateurs de conversion implicite ne devraient jamais lever d'exceptions et ne jamais perdre d'informations, afin qu'elles soient utilisées de façon sûre sans que le programmeur ait à intervenir."</sentencetext>


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 29 novembre 2012 12:22
    Modérateur
  • Bonjour Patrice,

    Tu est d'accord avec moi que si Microsoft à introduit la méthode ToString dans la classe de base object, ce que elle impose que toute objet est convertible en string.

    Et ben ma proposition consiste juste à faire l'économie de l'appel vers la méthode ToString en considérant la convertibilité comme un fait acquis et ne pas avoir à l’expliciter à travers un appel vers une méthode (ToString) => cohérence + plus d'abstraction.

    Surtout je ne voie pas pour quoi penser à la perte d'information ou de levé d'exception :

    Quand je fait : object o = new string("ffff");

    et si j'utilise l'objet o à travers l'interface object je perd de l'information, pourtant ça peut avoir du sans.

    Cordialement.



    jeudi 29 novembre 2012 14:15
    Auteur de réponse