Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...