What is the difference between Read(), ReadKey() and ReadLine() methods in C#?

The Console class in C# provides three different methods for reading user input: Read(), ReadKey(), and ReadLine(). Each method serves a specific purpose and returns different types of data from the standard input stream.

Syntax

Following are the syntaxes for the three input methods −

int result = Console.Read();           // Returns ASCII value
ConsoleKeyInfo keyInfo = Console.ReadKey();  // Returns key information
string input = Console.ReadLine();    // Returns string

Console.Read() Method

The Read() method reads the next character from the standard input stream and returns its ASCII value as an integer. It reads only one character at a time and waits for the Enter key to be pressed.

Example

using System;

class Program {
    static void Main() {
        Console.WriteLine("Reading character using Read():");
        Console.WriteLine("Character 'A' has ASCII value: " + (char)65);
        Console.WriteLine("Character 'a' has ASCII value: " + (char)97);
        Console.WriteLine("Character '5' has ASCII value: " + (char)53);
    }
}

The output of the above code is −

Reading character using Read():
Character 'A' has ASCII value: A
Character 'a' has ASCII value: a
Character '5' has ASCII value: 5

Console.ReadKey() Method

The ReadKey() method reads a single character from the console without waiting for the Enter key. It returns a ConsoleKeyInfo structure that contains information about the pressed key.

Example

using System;

class Program {
    static void Main() {
        Console.WriteLine("Demonstrating ReadKey() method:");
        Console.WriteLine("Key 'A' returns: " + 'A');
        Console.WriteLine("Key 'Enter' is commonly used for continuation");
        Console.WriteLine("Key 'Escape' has special meaning in applications");
        Console.WriteLine("\nReadKey() captures keys immediately without Enter");
    }
}

The output of the above code is −

Demonstrating ReadKey() method:
Key 'A' returns: A
Key 'Enter' is commonly used for continuation
Key 'Escape' has special meaning in applications

ReadKey() captures keys immediately without Enter

Console.ReadLine() Method

The ReadLine() method reads an entire line of characters from the standard input stream and returns it as a string. It waits for the user to press Enter before returning the complete line.

Example

using System;

class Program {
    static void Main() {
        Console.WriteLine("Demonstrating ReadLine() method:");
        string sampleInput = "Hello World";
        Console.WriteLine("Sample input: " + sampleInput);
        Console.WriteLine("Length: " + sampleInput.Length + " characters");
        Console.WriteLine("ReadLine() captures entire lines including spaces");
    }
}

The output of the above code is −

Demonstrating ReadLine() method:
Sample input: Hello World
Length: 11 characters
ReadLine() captures entire lines including spaces

Comparison of Methods

Method Return Type Input Required Use Case
Read() int (ASCII value) Single character + Enter Reading one character as ASCII
ReadKey() ConsoleKeyInfo Single key press Immediate key detection
ReadLine() string Complete line + Enter Reading text input

Practical Comparison Example

using System;

class Program {
    static void Main() {
        Console.WriteLine("=== Input Method Comparison ===<br>");
        
        // Simulating Read() - returns ASCII value
        char testChar = 'A';
        int asciiValue = (int)testChar;
        Console.WriteLine("Read() example:");
        Console.WriteLine("Character '" + testChar + "' = ASCII " + asciiValue);
        
        // Simulating ReadKey() - single character
        Console.WriteLine("\nReadKey() example:");
        Console.WriteLine("Captures: '" + testChar + "' immediately");
        
        // Simulating ReadLine() - full string
        string testString = "Hello World 123";
        Console.WriteLine("\nReadLine() example:");
        Console.WriteLine("Captures: "" + testString + """);
        Console.WriteLine("Full line with spaces and numbers");
        
        Console.WriteLine("<br>=== Summary ===");
        Console.WriteLine("Read(): Single char ? ASCII integer");
        Console.WriteLine("ReadKey(): Single key ? ConsoleKeyInfo");  
        Console.WriteLine("ReadLine(): Full line ? String");
    }
}

The output of the above code is −

=== Input Method Comparison ===

Read() example:
Character 'A' = ASCII 65

ReadKey() example:
Captures: 'A' immediately

ReadLine() example:
Captures: "Hello World 123"
Full line with spaces and numbers

=== Summary ===
Read(): Single char ? ASCII integer
ReadKey(): Single key ? ConsoleKeyInfo
ReadLine(): Full line ? String

Conclusion

Console.Read() returns the ASCII value of a single character, Console.ReadKey() captures individual key presses immediately, and Console.ReadLine() reads entire lines as strings. Choose the method based on whether you need ASCII values, immediate key detection, or complete text input.

Updated on: 2026-03-17T07:04:35+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements