2009-05-30 10 views
4

Quelle est la différence entre read() et readline() en C#? Peut-être que nous ne l'utilisons pas mais dans mon académie la seule différence est que l'un a "ligne" et l'autre n'a pas ... En C++, il y a "cin" et il a "endl" ajouter une ligne Quelqu'un peut-il me dire la différence?Quelle est la différence entre read et readline en C#?

Répondre

8

Voulez-vous dire TextReader.Read et TextReader.ReadLine? Une surcharge de TextReader.Read lit des caractères dans un tampon (un char[]) et vous pouvez spécifier le nombre de caractères que vous voulez lire (au maximum). Un autre lit un seul caractère, renvoyant un int qui sera -1 si vous avez atteint la fin du lecteur.

TextReader.ReadLine lit une ligne entière en tant que string, qui n'inclut pas le terminateur de ligne.

Pour autant que je sache, endl est plus couramment utilisé conjointement avec cout en C++:

cout << "Here's a line" << endl; 

Dans .NET vous utiliseriez

writer.WriteLine("Here's a line") 

pour accomplir la même chose (pour un TextWriter approprié, utilisez également Console.WriteLine pour la console). Lit une ligne de texte, tandis que Console.Read lit un seul caractère (c'est comme la surcharge sans paramètre de TextWriter.Read).

Console.ReadLine() est essentiellement le même que Console.In.ReadLine() et Console.Read() est essentiellement le même que Console.In.Read().

EDIT: En réponse à votre commentaire à l'autre réponse, vous ne pouvez pas faire:

int x = Console.ReadLine(); 

parce que le type de retour Console.ReadLine() est une chaîne, et il n'y a pas de conversion de string à int. Vous pouvez faire

int x = Console.Read(); 

parce que Console.Read() renvoie un int. (Encore une fois, c'est le code Unicode ou -1 pour "fin de données".)

EDIT: Si vous voulez lire un nombre entier à partir du clavier, c'est-à-dire que l'utilisateur tape "15" et que vous voulez le récupérer comme un entier, vous devez utiliser quelque chose comme:

string line = Console.ReadLine(); 
int value; 
if (int.TryParse(line, out value)) 
{ 
    Console.WriteLine("Successfully parsed value: {0}", value); 
} 
else 
{ 
    Console.WriteLine("Invalid number - try again!"); 
} 
+0

désolé mais je voulais dire "Console.ReadLine() "et" Console.Read() " – Sherif

+0

ok, mais quelle est votre recommandation mots à propos de lire entier du clavier: utiliser lire ou readline et faire convertir? – Sherif

2

Si vous parlez Console.Read et Console.ReadLine, la différence est que Read retourne un seul caractère, alors que ReadLine renvoie la ligne d'entrée entière. Il est important de noter que dans les deux cas, l'appel d'API ne reviendra pas tant que l'utilisateur n'aura pas appuyé sur ENTRÉE pour soumettre le texte au programme. Donc, si vous tapez "abc" mais n'appuyez pas sur ENTER, Read et ReadLine se bloqueront jusqu'à ce que vous le fassiez.

+0

ok, mais pourquoi: int x; x = Console.Read(); // ok x = Console.ReadLine();/* Erreur lors de la conversion de chaîne en entier */ et en C++, je n'ai pas besoin de convertir pour obtenir les données d'entrée en entier en utilisant cin.on d'autre part, C# si vous utilisez Console.ReadLine() vous devez convertir.? (up) – Sherif

+0

Console.ReadLine() retourne une chaîne, pas un int. –

Questions connexes