struct
Børre Stenseth
C#>Stringer

Stringer

Hva
Kort om stringer

Stringer er som i de fleste andre språk "immutable". Det vil si at de ikke kan endres. Det betyr at hver gang vi appenderer til en string, f.eks. slik:

 String S="Hallo";
 S+=" alle sammen";

så lages det en ny string, et nytt String-objekt. Det kan derfor bli ganske tidkrevende å bygge opp stringer på denne måten. Hver gang må det allokeres en ny hukommelsesblokk. Vi kan forbedre situasjonen betraktelig dersom vi bruker StringBuilder. En StringBuilder kan gis en størrelse som er "stor nok" til at vi kan bygge. Selv om vi ikke på forhånd vet nøyaktig hvor stor stringen vår kan bli, kan vi lage den stor nok, eller vi kan lage den stor nok til å redusere antall "nyetableringer".

StringBuilder Sb = new StringBuilder(1000);
Sb.Append("Hallo ");
Sb.Append("alle sammen");
String S= Sb.ToString();

StringBuilder har en rekke metoder og egenskaper som gjør at vi kan sette og endre kapasiteten og sjekke at vi ikke får "overflow".

På samme måte som vi finner i Python kan vi beskrive stringkonstanter som er slik de framstilles, typisk kan de inneholde linjeskift, som linjeskift. F.eks. slik:

String xmlfragment=@"<person>
	<navn>Ole</navn>
	<adresse>Moss</adresse>
</person>
";

På samme måte som i Python kan vi også formatere stringer på den måten at vi kan sette inn delstrenger i en master. F.eks slik i en sql-setning:

String Query = 
  @"SELECT hlag.navn,blag.navn,h_maal,b_maal,kamp_dato FROM kamp,
           lag hlag, lag blag 
                WHERE kamp.h_lag_id = hlag.lag_id AND
                      kamp.b_lag_id = blag.lag_id AND 
                      liga_id in
                        (SELECT liga_id FROM liga 
                            WHERE sesong_id='{0}' 
                              AND land_id='{1}' 
                              AND  nivaa='{2}' 
                    )
                ;";
String myQuery=String.Format(Query, year, country, level);

Dersom vi ønsker " som en del av master stringen, kan vi bruke doble "", slik:

String fragment = @"
<person id=""{0}"">
	<navn>{1}</navn>
</person>
";
String myFragment=String.Format(fragment, "123","ole");
Referanser

Koden er sitert i teksten

Du kan eksperimentere med dette og noen andre temaer i programmet:
https://svn.hiof.no/svn/psource/Csharpspikes/language/summary
Vedlikehold

B.Stenseth, desember 2006

(Velkommen) C#>Stringer (Typekonvertering)