Avatar billede mcgoat Nybegynder
07. juli 2006 - 10:39 Der er 6 kommentarer og
2 løsninger

Hvilken concat måde er rigtig?

Hvad er den "rigige" måde i C#?

String test = "hej";

Console.WriteLine( "{0} med dig", test );

Console.WriteLine( test + " med dig" );

Console.WriteLine( string.ConCat(test," med dig") );
Avatar billede mcgoat Nybegynder
07. juli 2006 - 10:39 #1
flot jeg ikke kan stave til "rigtige".. oh well :)
Avatar billede the_party_dog Nybegynder
07. juli 2006 - 10:42 #2
Langt de fleste som laver tutorials og andre små eksempler på nettet, støtter sig op af metode nummer 1.

Men ellers vil mange nok tage nummer 2 i brug hvis de lige skal have noget hen. Men hvad falder mest i din smag?

Jeg kan godt lige nummer 1 da det ikke "ødelægger" linjen når jeg skal læse den, jeg skal ikke se 100 uderlige typecasts eller andet lir. Jeg ser nogle henvisninger til variabler. Problemet ved nummer 1 kan så opstå når du har mere end 4-6 stks variabler du skal have med, så kan det være svært at overskue hvis man ikke lige er 130% obs på alt.
Avatar billede bennytordrup Nybegynder
07. juli 2006 - 10:42 #3
Jeg ville bruge String.Format("{0} med dig", test), hvis opgaven går ud på at bygge en string op med et fast indhold, hvor enkelte dele kan variere.

Hvis opgaven omfatter mange formatteringer og appends til en tekst, så er StringBuilder vejen frem. Den har en Append metode, der tilføjer tekst, og en AppendFormat, der appender med formattering som string.Format.
Avatar billede Slettet bruger
07. juli 2006 - 10:49 #4
Med de simple eksempler du viser er der ikke rigtigt nogen forskel og derfor heller ikke nogen grund til at bruge meget krudt på at vælge, men tommelfingerreglen lyder,

1) Hvis du skal lægge mange stringe sammen brug en StringBuilder.
2) Hvis noget skal placeres inde midt i en string brug en formatter, ala version 1 eller brug evt. String.Format, hvis du skal bruge resultatet i en variable.
3) String.ConCat eller string + string er "ens" og derfor en smagssag.

Det som betyder mest er at du ligeså snart du begynder a concatenerer i et loop får skiftet til en StringBuilder.
Avatar billede mcgoat Nybegynder
07. juli 2006 - 11:14 #5
takker :)
Avatar billede md_craig Nybegynder
07. juli 2006 - 14:49 #6
Personligt i dit tilfælde foretrækker jeg 1'eren, og det har været i forbindelse med en overgang fra Java til C#...

Startede med:
string n = "Peter";
string s = "hej " + n;
Console.WriteLine( s + ", Hvordan går det?" );

Det der kan siges her, er at sådan gjorde vi jo i Java, det var hvad vi kendte...

Så blev det:
string n = "Peter";
string s = "hej " + n;
Console.WriteLine( "{0}, Hvordan går det?", s );

Opdagelsen af Format i Console.WriteLine, og begyndte at bruge det meget af stort set samme grund som the party dog... det virkede mere overskueligt...

Og sidst:
string n = "Peter";
string s = string.Format("hej {0}",n);
Console.WriteLine( "{0}, Hvordan går det?", s );

Det er det jeg i dag bedst kan lide, med mindre vi snakker nødvendighed for StringBuilders, men den snak er taget
-------------------------------------------------------------------------------------

Sagen er jo at det er mest smagsag hvis du spørg mig...
Personligt kan jeg bedst lide Formatters frem for ConCat eller + ("som er det samme").

Dog vil jeg anbefale at være Konsekvent, brug ikke Format et sted og ConCat et andet... Det bidrager bare til forviring hvis du spørg mig...

Men vil da mene at det er mere overskueligt med format... tag fx:

"Data Source=" + server + ";Database=" + database + "; User ID=" + user + ";Password=" + password

VS.

string.Format("Data Source={0};Database={1};User ID={2};Password={3}", server, database, user, password);

Vælg ud fra hvad du syns er mest overskueligt af fx det 2 eksempler...
Avatar billede arne_v Ekspert
07. juli 2006 - 23:28 #7
et par supplerende kommentarer

String.Concat må være dømt ude - ingen vil foretrække at bruge den - der er ikke
rigtigt nogen fordele ved den

plus versus String.Format er et reelt valg

kriterierne må være:
1) smag
2) funktionalitet
3) performance

re 1)

smag kan jo altid diskuteres

personligt kan jeg bedst lide plus også i et eksempel som den connection string

jeg synes at plus er lige så nem at læse og nemmere at rette i

men spørger man 7 personer er der sikkert 8 meninger om den sag

re 2)

String.Format har en masse muligheder som plus ikke har

for String data kan du angive {0,10} og {0,-10} hvilket kan være ret godt for
at få noget opstilling til at stå ordentligt

for tal data er der endnu flere muligheder

skal/kan man bruge disse muligheder så er String.Format jo langt bedre

re 3)

String.Format kræver en fortolkning af format strengen og derfor er
den langsommere end plus

hvis performance er kritisk kan det pege mod bare at bruge plus
Avatar billede arne_v Ekspert
07. juli 2006 - 23:29 #8
PS: Java 1.5 introducerede formatering i Java (dog mere C style end C# style d.v.s.
    at det er % som escaper)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester