Я пишу библиотеку, где внутри она использует ConcurrentQueue
. В одном из методов private
я хочу убедиться, что элемент, который у меня есть в данный момент, - это элемент, который будет снят с хранения (т. Е. Если я неправильно написал свои коды, это должно быть ожидаемым поведением). Как мне это правильно утверждать?
Моя текущая попытка:
#if DEBUG
object peeked = null;
queue.TryPeek(out peeked);
Debug.Assert(peeked == itemThatWillBeDequeued);
#endif
Что мне кажется довольно странным - если мне нужно использовать директиву #if
, то у меня не будетб Debug.Assert()
. Тем не менее, я никак не мог напрямую поместить это ConcurrentQueue.TryPeek()
в оператор assert. Кроме того, выполнение этого inline, вероятно, будет означать, что ConcurrentQueue.TryPeek()
будет запускаться в выпуске во время выполнения (если я не ошибаюсь).
Каким должен быть правильный способ сделать это?