Popメソッドと同様に、Stackの内容が空の場合にPeekメソッドを呼び出すと、例外InvalidOperationExceptionがスローされます。
Stackが空の状態でPeekメソッドを呼び出すとInvalidOperationExceptionとなる
using System;
using System.Collections.Generic;
class Sample {
static void Main()
{
var s = new Stack<string>();
Console.WriteLine($"Count = {s.Count}"); // 0
// Stackが空の状態でPeek操作を行うとInvalidOperationExceptionがスローされる
Console.WriteLine(s.Peek());
}
}
実行結果
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プロパティを参照します。