2017-08-15 3 views
3

Je travaille dans le livre sur un exemple de code, mais a un peu confus et lutte pour trouver (probablement simple) réponse. J'ai écrit le code suivant:char.IsWhiteSpace trouve l'espace au « mal » Position

static void CharFunctionality() 
{ 

    Console.WriteLine("char.IsWhiteSpace('Hello There', 5): {0}", char.IsWhiteSpace("Hello There", 5)); 
    Console.WriteLine("char.IsWhiteSpace('Hello There', 6): {0}", char.IsWhiteSpace("Hello There", 6)); 
    Console.WriteLine(); 
    Console.ReadKey(); 
} 

quand je le lance-je obtenir la sortie suivante:

char.IsWhiteSpace('Hello There', 5): True 
char.IsWhiteSpace('Hello There', 6): False 

Je pense que cela devrait être l'inverse? le 5ème caractère est 'o' et le 6ème est 'espace'. J'espère que quelqu'un peut me diriger dans la bonne direction sur mon voyage dans le monde du développement :)

merci!

+3

commence à compter par 0. 5 est un espace :-) Ce –

+5

est sans rapport avec des caractères blancs. Les index de chaîne et de tableau commencent par 0. – CodesInChaos

+1

Si vous vous demandez pourquoi nous démarrons des tableaux à 0, cela signifie que les tableaux se désintègrent en pointeurs. Cela peut avoir plus de sens si vous connaissez du C. –

Répondre

2

Le nombre que vous fournissez est l'indice de la lettre dans la chaîne que vous voulez rechercher. Dans votre premier cas, c'est la lettre au 5ème indice de votre fort. En C#, les index (pour les tableaux ou pour les chaînes, n'a pas d'importance) commencent toujours à l'index 0.

Donc dans votre chaîne "Hello There", "H" est dans l'index 0, "e" est dans le index 1, 'l' est dans l'index 2, etc. Cela signifie que le caractère dans le 5ème index est un espace blanc.

Cela fonctionne ainsi dans la plupart des langages de programmation. Vous devez toujours commencer à compter à 0.

0

Il est 0 indice basé.

0-H

1-e

2-l

3-l

4-o

5- [espace]

6- T

5

index de chaîne commence à partir de 0 Voici donc dans votre code:

char.IsWhiteSpace('Hello There', 5) //true 
char.IsWhiteSpace('Hello There', 6) //false 

Si le démarrage de 0 puis 5ème personnage sera un espace blanc où le résultat est vrai et le 6 caractère est « T » résultat donc est faux