ReadLineメソッドを使うことで標準入力から1行分の文字列を読み込むことができます。 ReadLineメソッドの戻り値には改行文字は含まれないため、末尾の改行文字を取り除くchomp/chopのような操作は不要です。

コマンドプロンプトで実行した場合(標準入力がターミナルに接続されている場合)は、ReadLineメソッドはエンターキーが押されるまで待機します。 標準入力がパイプ等に接続されている場合は、その接続先から1行分読み込んだ時点で処理が戻ります。 なお、ReadLineメソッドではCR/LF/CRLFのいずれかを改行として扱います。

またReadLineメソッドは、リダイレクトパイプで渡される内容が終端(EOF)に達した場合や、コンソールアプリケーションにおいてCTRL+Z(LinuxではCTRL+D)によって入力を中断した場合など、それ以上標準入力から読み込める文字列がない場合にはnull/Nothingを返します。

Console.ReadLineメソッドで標準入力から読み込める内容がなくなるまで読み込む
using System;

class Sample {
  static void Main()
  {
    var lineNumber = 0;

    while (true) { // 無限ループ
      // 標準入力から一行読み込む
      var line = Console.ReadLine();

      if (line == null) {
        // 読み込める文字列が無くなった
        break;
      }
      else {
        // 読み込んだ文字列に行番号を付けて標準出力に書き込む
        lineNumber++;
        Console.WriteLine("{0}: {1}", lineNumber, line);
      }
    }
  }
}
キー入力を使った場合の実行例
>sample.exe
line1
1: line1
line2
2: line2
line3
3: line3
^Z
パイプを使った場合の実行例
>type sample.txt
line1
line2
line3

>type sample.txt | sample.exe
1: line1
2: line2ReadメソッドはReadLineメソッドとは異なり
3: line3

コンソールアプリケーションではCTRL+Cを押下することでアプリケーションが中断します。 CTRL+Cが押下されたときの動作を変更したい場合は、Console.CancelKeyPressイベントにイベントハンドラを設定することで動作を定義することができます。

標準入出力との接続については§.標準ストリームのリダイレクト子プロセスの標準入出力 §.自プロセスと子プロセスの標準ストリームをパイプする、リダイレクト・パイプなどコマンドラインでの操作についてはMS-DOSコマンドプロンプトTips §.パイプとリダイレクトを参照してください。