De ce se tipărește System.char[] în acest caz? (Programare, C#, String, Valoare De Returnare)

Waffles a intrebat.

Încerc să-mi dau seama ce fac greșit aici, dar se pare că nu reușesc. Am această metodă care primește un șir de caractere și îl inversează. Cu toate acestea, atunci când tipăresc șirul inversat din metoda apelantului, obțin doar „System.Char []]” în loc de șirul inversat real.

    static string reverseString(string toReverse)
    {
        char[] reversedString = toReverse.ToCharArray();
        Array.Reverse(reversedString);
        return reversedString.ToString();
    }

2 răspunsuri
bcat

Apelarea ToString pe un T array în .NET va returna întotdeauna "T[]". Ar trebui să utilizați acest lucru în schimb: new string(reversedString).

stevemegson

Prin apelarea ToString obțineți doar implementarea implicită pe care fiecare clasă o moștenește din object. .NET nu poate oferi o implementare specială doar pentru un array de char; suprascrierea ar trebui să se aplice tuturor tipurilor de array.

În schimb, puteți trece array-ul la constructorul String, return new String(reversedString).