Om jag har Det skulle ha gått betydligt snabbare att testa... Ni får rätta mig, men om jag inte minns fel så är väl String.Concat() och StringBuilder det man bör använda? Sure , är det så att man ska utföra flera kontinuerliga concats så är en string builder att föredra. >Innan dess, lägg av med fåniga optimeringar som "if (str.length == 0)" istället för " if (str == "") " Roger, det var exakt ett sånt svar jag ville ha, från en professionell utvecklare, rakt på sak och inget lull lull. String format funkar ju alltid En lite utförligare förklaring till olika metoder för att lägga ihop strängar (utan prestandaproblemen som sträng + sträng kan innebära): http://www.tednyberg.com/Default.aspx?id=54 Roger skrev : <b>Sluta med allt trams och skriv fin och tydlig kod och börja jiddra när ni ser att ni får prestandaproblem. </b> Jag lånar tråden ett tag. Testa med String.Concat istället! String.Format behöver du bara om du vill ändra formateringen (exempelvis få in tusentalsavgränsare i ett tal, formatera ett datum etc). Finns dock en fördel med string.Format: Man kan enkelt ändra om ordningen på saker, samt att det går att lokalisera relativt enkelt (bara en sträng som ska lokaliseras istället för logik :P ), fast just lokalisering är väl inte särskilt intressant i det här fallet. Men är värt att tänka på. Bra poäng, Oskar! Men i det här fallet verkar det bara vara fråga om att lägga till ett parametervärde till en querystring, och då skulle jag rösta för en enkel Concat().addera två strängar
string ord1 = pelle;
string ord2 = soft;
Hur gör jag för att få en sträng med innehållet "pellesoft"??
Räcker det om jag skriver ord1 + ord2???Sv: addera två strängar
och ja, du får det resultatet, dock bör du vara medveten om att "addera" strängar kan leda till prestandaproblem, eftersom strängar är immutable.Sv:addera två strängar
/mSv: addera två strängar
den allokerar onödigt mycket minne så att det finns utrymme för strängen att växa, och växer sedan i stora block.
om du använder + eller concat spelar ingen roll.
det blir precis samma sak i slutet iaf.
(ok + går säkert via op_add i viss optimerad IL kod, och resulterar i någon nanosekunds overhed)
Folk har en märklig förmåga att försöka göra saker lite "häftiga"
"jo kalle jag har hört att man ska ha en stringbuilder... jag vet inte riktig varför och vad skillnaden blir , men lite hightec är det iaf"
Jag tror väldigt många sitter o läser div "how to optimize this and that" på tex codeproject och tycker att det verkar skitfränt.
Sluta med allt trams och skriv fin och tydlig kod.
och börja jiddra när ni ser att ni får prestandaproblem.
Innan dess, lägg av med fåniga optimeringar som "if (str.length == 0)" istället för " if (str == "") "
*grrr, aggressiv idag* ;-)Sv:addera två strängar
Om man gör ovanstående som optimering håller jag med men annars tycker jag båda varianterna är lika bra. Grundproblemet är ju att System.String saknar en Empty property så därför är man tvungen att använda någon av ovanstående sätt (eller IsNullOrEmpty) för att avgöra om en sträng är tom. Vilken sätt man väljer spelar väl ingen roll.
Jag använder oftast IsNullOrEmpty vilket antagligen har sämst prestanda men tycker det är tydligast.
(och faktiskt kräver minst skrivande med intellisense)Sv:addera två strängar
/mSv: addera två strängar
string ord1 = "pelle";
string ord2 = "soft";
string nyttOrd = string.Format("{0}{1}",ord1,ord2);
Då kan man ju dessutom ha en hel mening och lägga in ord1 och ord2 där man känner för det
tex.
string nyttOrd = string.Format("Det är aldrig fel att få svar från {0}{1} forumet",ord1,ord2);
Sv: addera två strängar
<b>Tillägg:</b>
Martin, System.String saknar inte Empty.
("" == string.Empty) -> true :)Sv:addera två strängar
Word! Läsbar och lättunderhållen kod är värt otroligt mycet, meningslösa optimeringar förstör bara...tycker inte du var för aggresiv, ibland måste vett bankas in :-)Sv: addera två strängar
Jag har ett liknande problem jag ska få in en int i en sträng men den säger "mobba ut int ur strängen"
<code>
String lank, grid;
grid = (string)GridView2.SelectedValue;
// lank = "news.aspx?id=" + GridView2.SelectedValue.ToString ;
// lank = string.Format(,"news.aspx?id=", GridView2.SelectedValue.ToString );
lank = string.Format("news.aspx?id={0}", grid);
Server.Transfer(lank);
</code>
Nån som kan hjälpa mig ?
Gick nyss över från VB och där var det inga problem med det här.
Ska jag gå tillbax ?
EDIT:
Om nån vill veta så är det C#Sv:addera två strängar
/Ted
www.tednyberg.comSv: addera två strängar
Sv:addera två strängar
Sv:addera två strängar
String lank, grid;
grid = GridView2.SelectedValue.ToString();
lank = string.Format("news.aspx?id={0}", grid);
kan ha varit din cast av selectedvalue som blev fel