Popメソッドと同様に、Stackの内容が空の場合にPeekメソッドを呼び出すと、例外InvalidOperationExceptionがスローされます。

Stackが空の状態でPeekメソッドを呼び出すとInvalidOperationExceptionとなる
Imports System
Imports System.Collections.Generic

Class Sample
  Shared Sub Main()
    Dim s As New Stack(Of String)()

    Console.WriteLine($"Count = {s.Count}") ' 0

    ' Stackが空の状態でPeek操作を行うとInvalidOperationExceptionがスローされる
    Console.WriteLine(s.Peek())
  End Sub
End Class
実行結果
Count = 0
Unhandled exception. System.InvalidOperationException: Stack empty.
   at System.Collections.Generic.Stack`1.ThrowForEmptyStack()
   at System.Collections.Generic.Stack`1.Peek()
   at Sample.Main() in /home/smdn/samplecodes/dotnet/cs/test.cs:line 12

したがって、Peekメソッドの戻り値を見てStackが空かどうかを判断することはできません。 Stackが空であるかどうかを判断するにはPeekメソッドではなくCountプロパティを参照します。

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。