Developpez.com - Rubrique .NET

Le Club des Développeurs et IT Pro

Strings en C# et .NET

Un tutoriel de Jon Skeet, traduit par Jean-Michel Ormes

Le 2012-06-13 19:09:10, par Jean-Michel Ormes, Rédacteur
Cette discussion est destinée à recueillir vos commentaires sur l'article Strings en C# et .NET (traduction de l'article Strings in C# and .NET de Jon Skeet)

Le type System.String (raccourci string en C#) est l'un des types les plus importants en .NET, et malheureusement, il est très mal compris. Cet article tente d'expliquer certaines bases de ce type.
  Discussion forum
2 commentaires
  • MABROUKI
    Expert confirmé
    bonjour
    C' est un tres bon article sur les string et bon courage aux traducteurs.........
    Neanmoins sur la forme d'abord ,etant francophone je suis pointileux sur les termes (chose qu' un francais peut traiter à la legere vu les libertes qu'on peut prendre avec sa langue maternelle ....).

    Un mot m'a etonne :Il est immuable ,j'ai compris plutot Immutable car il est passe dans l'usage comme integer,double etc...... du moins en C++,Java...(wiki.fr parle de mutable et non-mutable....)

    Ensuite ce lapsus anglais,literal:

    Essentiellement, un string est un tableau de caractères en mémoire, plus la longueur du tableau et la longueur du string (en caractères)
    J'ai compris quant à moi que le tableau est rempli par les caracteres suivi par 2 espaces memoires (2 ,4 octets ?) precisant separemment la longueur du tableau et la longueur du string (en caractères)....
    En Com un espace memoire est reserve en tete à l'adresse de depart du tableau suivi d'un espace memoire indiquant la longueur en caracteres suivi des caracteres de chaine .....plus un caractere terminateur de fin \0...

    Sur le fond
    L'auteur passe sur le pourquoi de l'immutabilite du string.....
    (microsoft justifie l'immutabilite du string par la preservation des cles de hachage, et la securite ,un type immutable etant thread-safe:repertoire ,mot de passe etc....).....
    Le "pool" de chaine de caracteres est une consequence de l'immutabilite puisque l'on garde les anciennes chaines et la surcharge memoire induite...
    Cet inconvenient n'est pas transparent pour le programmeur....

    Aussi je me pose une autre question :pourquoi microsoft n'a pas cree explicitement comme dans d'autres languages 2 types strings l'un mutable,l'autre non-mutable ....et pour chacun un domaine d'usage specifique........

    bon code...............
  • tomlev
    Rédacteur/Modérateur
    Envoyé par MABROUKI
    Aussi je me pose une autre question :pourquoi microsoft n'a pas cree explicitement comme dans d'autres languages 2 types strings l'un mutable,l'autre non-mutable
    Mais ils l'ont fait
    immuable : String
    mutable : StringBuilder

    (tout comme en Java avec String et StringBuffer)