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");