Readメソッドを使うと標準入力から1文字ずつ読み込むことができます。 ReadLineメソッドとは異なり、Readメソッドでは改行文字もそのまま読み込まれます

Readメソッドは読み込んだ文字をchar/Char型の範囲の数値(int/Integer型)として返すため、文字として参照する場合は戻り値をChar型にキャストします。 標準入力から読み込める文字列がなくなった場合やCTRL+Zによって入力を中断した場合、Readメソッドは-1を返します。

Console.Readメソッドで標準入力から1文字ずつ読み込む
Imports System

Class Sample
  Shared Sub Main()
    While True ' 無限ループ
      ' 標準入力から一文字読み込む
      Dim ch As Integer = Console.Read()

      If ch = -1 Then
        ' 読み込める文字列が無くなった
        Exit While
      Else
        ' 読み込んだ文字にかっこを付けて標準出力に書き込む
        Dim c As Char = ChrW(ch)

        Console.Write($"[{c}]")
      End If
    End While
  End Sub
End Class
キー入力を使った場合の実行例
>sample.exe
f[f]o[o]o[o]
[
]b[b]a[a]r[r]
[
]
^Z
パイプを使った場合の実行例
>type sample.txt
foo
bar

>type sample.txt | sample.exe
[f][o][o][
][b][a][r][
]

ReadLine, Readメソッドではキー入力された文字はそのままコンソールウィンドウにも表示されます(エコーバックされる)。 キー入力を表示したくない場合、エコーバックしないようにしたい場合はReadKeyメソッドを使うことができます。

ReadKeyメソッドの使用例はエコーバックせずに文字列を入力する(Console.ReadKey)をご覧ください。