HDSoftware Skrevet 10. mars 2007 Del Skrevet 10. mars 2007 Heisan Noen som kan fortelle meg regelen for når jeg skal bruke 0 basert og når jeg skal bruke 1 basert? 0basert er for meg i utgangspunktet helt dustete og det blir enda mer idiotisk når det blandes i hytt og pine. Noen som kan fortelle meg en grunn til at ting skal være 0 basert? Eksempel: dim EnArray() as String split(TabseparertString, chr(9)) her er første element EnArray(0) Hvis jeg derimot har en streng: dim MyString as String = "Hello World" så vil jo følgende feile: dim t as string = mid(MyString,0,1) Derimot vil dim t as String = mid(MyString,1,1) gi rett resultat Finner dette rimelig rart da en string egentlig er en array av char's Må bare ha det helt klart for meg: Hvorfor finnes NULL basert i det hele tatt? Ole Lenke til kommentar
aadnk Skrevet 10. mars 2007 Del Skrevet 10. mars 2007 Dette er en av årsakene til at du helst bør unngå å bruke Microsoft.VisualBasic-navneområdet for å ikke skape konflikt over hvilket grunntall en skal benytte over hele prosjektet. Etter min mening er det viktigste å være konsekvent - hvilket indeks en definerer til å være første element er heller av mindre betydning. For eksempel kan du oppnå null-grunntall i eksempelet ditt ved å bruke Substring-metoden i String-klassen istedenfor Mid. Dersom du vil lære mer om de historiske omstendighetene knyttet til valget av base i arrayer, kan du lese denne. Wikipedia-artikkelen. Lenke til kommentar
GeirGrusom Skrevet 10. mars 2007 Del Skrevet 10. mars 2007 Og hvis du skal hente ut en bokstav av en string, kan du bruke indexeren istedet for Substring eller Mid: Dim c As Char = "Hello World!"(1) Spør du meg, er nullbasert mest logisk, se for deg at en string er en peker til et sted i minnet: "Hello World" og da vil "address + (sizeof(char) * index)" gi feil verdi, siden i forhold til posisjonen i minnet, er 0 basen. Sånn ser jeg på det ihvertfall. Lenke til kommentar
ze5400 Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 0 FTW. Er jo bare en vanesak. Hva er før 1? Jo 0. Hva er før 0?, jo ingenting. MAO. 0 = Først ^^ Sånn ser jeg det Lenke til kommentar
HDSoftware Skrevet 12. mars 2007 Forfatter Del Skrevet 12. mars 2007 vell, men hva er den første bokstaven i "Hello World"? Jo, det er W som er bokstav nr. 1 og ikke nr. 0. Ser poenget til GeirG hvis man tar i betraktning at array indexen er en peker som legges til adressen til selve arrayen, men jeg har valgt Visual Basic for en grunn og det er jo fordi jeg ikke gidder kode på bit nivå og ei heller vil ha noe med det som foregår under huden å gjøre. Derfor bli en index med start på 0 helt feil fordi null nettop betyr "ingenting" At 0 kommer før 1 er også feil. Matematisk sett er ikke null et tall, men en indikasjon på at det ikke er noen verdi tilstede. Men la oss ikke lage noen stor sak ut av dette, det handler jo om hva man vender seg til. Ville bare ha en tommelfing regel på når man bruker 0 og når man bruker 1........ btw - siden dette er en av årsakene til at man bør unngå vb name space, er det flere? Og eventuellt - hvorfor? De er vel der av en grunn? Ole Lenke til kommentar
GeirGrusom Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Matematisk sett er null et tall, teknisk sett er den ikke det, siden man ikke kan si at ingenting er et antall. Men logisk sett så ville man ved første øyekast si at 1 er den første indexen - helt enig. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå