IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Opérateur @ devant une chaîne


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut Opérateur @ devant une chaîne
    Je reviens juste un instant sur ce petit bout de code...

    Citation Envoyé par Keihilin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string sql = @"INSERT INTO TIETiers
                   (Nom, IdOperateur)
                   Values
                   (@Nom, @Id)";
    ...
    Pouvez-vous m'expliqeur à quoi sert le @ devant le INSERT... pour les autres, y'a pas de pblm, je sais ce qu'est une requête paramétrée.

    Merci d'avance,
    Lionel.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par pot2yaourt Voir le message
    Pouvez-vous m'expliqeur à quoi sert le @ devant le INSERT... pour les autres, y'a pas de pblm, je sais ce qu'est une requête paramétrée.
    http://www.developpez.net/forums/d66...concatenation/

  3. #3
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Citation Envoyé par gdkenny Voir le message
    C'est juste pour permettre d'écrire une chaîne de caractère sur plusieurs ligne de ton GUI
    Ok, ça marche, merci pour l'info !
    En fait, jusqu'à présent je faisais comme ça et ça fonctionnait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string s = "bla bla bla bla bla " +
               "bla bla bla bla bla " +
               "bla bla bla bla bla";

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par pot2yaourt Voir le message
    Ok, ça marche, merci pour l'info !
    En fait, jusqu'à présent je faisais comme ça et ça fonctionnait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string s = "bla bla bla bla bla " +
               "bla bla bla bla bla " +
               "bla bla bla bla bla";
    Oui, sauf que là tu accumules les concaténations, et dans ton exemple ce n'est pas une variable que tu créé, mais 3.

  5. #5
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Oui, sauf que là tu accumules les concaténations, et dans ton exemple ce n'est pas une variable que tu créé, mais 3.
    A mon humble avis, trois concatenation, ca coute peanuts, par contre, utiliser la concatenation, c'est laisser son appli bien ouverte pour de l'injection sql

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par pvialatte Voir le message
    A mon humble avis, trois concatenation, ca coute peanuts
    Certes, mais sur le principe cela démontre que la personne n'a peut être pas compris le comportement des strings et que du coup elle pourrait parfaitement écrire le même genre de code dans une jolie petite boucle.

  7. #7
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Oui, sauf que là tu accumules les concaténations, et dans ton exemple ce n'est pas une variable que tu créé, mais 3.
    Est-ce que tu peux m'expliquer ce que tu entends par "créer 3 variables" ?

    En PHP par exemple, on concatène les chaînes de la même façon que ce que j'ai montré précédemment, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = "bla bla bla " + $var + " bla bla bla";
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = "bla bla bla
               bla bla bla
               bla bla bla";
    voir même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = "bla bla bla
               bla bla bla" + 
               $var +
               "bla bla bla";
    et sans oublier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = "bla bla bla
               bla bla bla
               $var
               bla bla bla";
    Bref, tout ça pour dire que je ne vois pas trop comment en écrivant sur X lignes on crée X variables.

    Pour en revenir au C#, j'ai trouvé ça et ils donnent justement un exemple de concaténation sur plusieurs lignes avec des + ET commençant par @.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En fait ce n'est pas 3 variables, mais 3 instances de chaine.

    A chaque fois que tu fais une concaténation, ça crée une nouvelle instance avec le contenu des 2 chaines. Si tu fais 10000 concaténations dans une boucle, ça crée 10000 instances... or créer des instances d'objet est une opération relativement lourde, donc ça diminue les performances. Sans compter que la plupart des chaines "intermédiaires" ne sont plus utilisées, ce qui donne plein de boulot au garbage collector

  9. #9
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    ok, alors en fait, ce que veut dire Keihilin, c'est qu'en .net, les chaines de caracteres sont immuables

    ce que ca veut dire, c'est que si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string toto = "t" + "o" + "t" + "o";
    en memoire, ca va te prendre :
    une valeur chaine, de taille 1 : "t"
    une valeur chaine, de taille 1 : "o"
    une valeur chaine, de taille 1 : "t"
    une valeur chaine, de taille 1 : "o"
    une valeur chaine, de taille 4 : "toto"

    (bon, apres, c'est de la theorie, je crois que le compilateur sait concatener tout seul un exemple simple comme ca)

    Sur peu de concatenations, ca coute tres peu, par contre, si tu iteres une collection de string que tu concatenes, tu va te prendre un cout de perf...


    --------

    arf, grille

    Par contre, apres verif, le bout de code bete d'au-dessus donne bien:
    apres compilation

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Ah OK, c'est compris !

    Voilà des explications claires !

  11. #11
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Citation Envoyé par pvialatte Voir le message
    ok, alors en fait, ce que veut dire Keihilin, c'est qu'en .net, les chaines de caracteres sont immuables

    ce que ca veut dire, c'est que si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string toto = "t" + "o" + "t" + "o";
    en memoire, ca va te prendre :
    une valeur chaine, de taille 1 : "t"
    une valeur chaine, de taille 1 : "o"
    une valeur chaine, de taille 1 : "t"
    une valeur chaine, de taille 1 : "o"
    une valeur chaine, de taille 4 : "toto"

    (bon, apres, c'est de la theorie, je crois que le compilateur sait concatener tout seul un exemple simple comme ca)
    Exact, et c'est officiel maintenant

    Voir un article récent sur MSDN

    http://msdn.microsoft.com/en-us/library/ms228504.aspx

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 13
    Dernier message: 21/02/2011, 10h34
  3. [Java]Indentation devant une chaîne de caractère
    Par mika0102 dans le forum Général Java
    Réponses: 3
    Dernier message: 07/08/2009, 10h35
  4. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo