Stackが空のときにPopメソッドを呼び出すと、null
/Nothing
が返されるのではなく、例外InvalidOperationExceptionがスローされます。 このため、Popメソッドの戻り値からStackが空だったかどうかを判断することはできません。
Stackが空かどうかに関わらず、例外をスローせずにポップ操作を試行するメソッドとしてTryPopメソッドが用意されています。
このほか、PopメソッドでInvalidOperationExceptionを避けるには、Popメソッドを呼び出す前にCountプロパティを参照して、要素が1つ以上格納されているかチェックするようにします。