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