Je reviens juste un instant sur ce petit bout de code...
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.
Version imprimable
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 :
ou encore :Code:$result = "bla bla bla " + $var + " bla bla bla";
voir même :Code:
1
2
3 $result = "bla bla bla bla bla bla bla bla bla";
et sans oublier :Code:
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.Code:
1
2
3
4 $result = "bla bla bla bla bla bla $var bla bla bla";
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 @.
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
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 :
en memoire, ca va te prendre :Code:string toto = "t" + "o" + "t" + "o";
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 compilationCode:L_0000: ldstr "toto"
Ah OK, c'est compris !
Voilà des explications claires ! ;)
salut tt le monde
je sais que les amis on déjà donner de plus amples explications la-dessus mais quand même je peux dire le suivant :
les chaînes de caractère précédées par @ on les nome "Chaînes VERBATIM", ces chaînes sont utilisés souvent quand on veut écrire des requêtes SQL.
avantages :
- se débarasser des problèmes que peut causé la concaténation.
- requête facile à comprendre et modifier
C'est quand même pas extraordinaire le @ :
Si je fais ça :
et que j'affiche le contenu de sql dans le débugger, j'ai ça:Code:
1
2
3 string sql = @"select * from MYTABLE order by MYFIELD";
Code:
1
2sql "select *\r\n from MYTABLE\r\n order by MYFIELD"
en même temps, c'est pas les chaines en dur dans ton code que tu affiches dans le debugger. je fais comme bratomchi, les rares cas où je dois avoir une requete à même le code, j'utilise le @. sinon, c'est tout simplement illisible.
je l'utilise aussi bcp lorsque je dois construire des pages HTML et que la CSS est stockée dans une chaine (envoi par mail sur du Notes..)
Ben c'est normal, puisque l'intérêt de @ est justement de maintenir tous les caractères, y compris les tab et les entrées, et que \r\n = entrée.
Ah !!!
Donc faire
ne rend pas le même résultat que faireCode:
1
2
3 string s = "bla bla bla bla bla " + "bla bla bla bla bla " + "bla bla bla bla bla";
C'est quand même super important de le préciser.Code:
1
2
3 string s = @"bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla";
Exact, et c'est officiel maintenant 8-)
Voir un article récent sur MSDN
http://msdn.microsoft.com/en-us/library/ms228504.aspx