StringReader class is used to read data written by the StringWriter class. It is subclass of TextReader class. It enables us to read a string synchronously or asynchronously. It provides constructors and methods to perform read operations.
[SerializableAttribute] [ComVisibleAttribute(true)] public class StringReader : TextReader
StringReader has the following constructors.
| Constructors | Description | 
|---|---|
| StringReader(String) | Initializes a new instance of the StringReader class that reads from the specified string. | 
Following are the methods of StringReader class.
| Method | Description | 
|---|---|
| Close() | It is used to close the StringReader. | 
| Dispose() | It is used to release all resources used by the TextReader object. | 
| Equals(Object) | It determines whether the specified object is equal to the current object or not. | 
| Finalize() | It allows an object to try to free resources and perform other cleanup operations. | 
| GetHashCode() | It serves as the default hash function. | 
| GetType() | It is used to get the type of the current instance. | 
| Peek() | It is used to return the next available character but does not consume it. | 
| Read() | It is used to read the next character from the input string. | 
| ReadLine() | It is used to read a line of characters from the current string. | 
| ReadLineAsync() | It is used to read a line of characters asynchronously from the current string. | 
| ReadToEnd() | It is used to read all the characters from the current position to the end of the string. | 
| ReadToEndAsync() | It is used to read all the characters from the current position to the end of the string asynchronously. | 
| ToString() | It is used to return a string that represents the current object. | 
In the following example, StringWriter class is used to write the string information and StringReader class is used to read the string, written by the StringWriter class.
using System;
using System.IO;
namespace CSharpProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            StringWriter str = new StringWriter();
            str.WriteLine("Hello, this message is read by StringReader class");
            str.Close();
            // Creating StringReader instance and passing StringWriter
            StringReader reader = new StringReader(str.ToString());
            // Reading data
            while (reader.Peek() > -1)
            {
                Console.WriteLine(reader.ReadLine());
            }
        }
    }
}