Как найти пустой массив байтов - PullRequest
1 голос
/ 30 июня 2011

Как узнать, есть ли в байтовом массиве какие-либо данные или это недавно созданный байтовый массив?

var Buffer = new byte[1000];
//How to find out is Buffer is empty or not?

Ответы [ 3 ]

7 голосов
/ 30 июня 2011

Я предполагаю, что под «пустым» вы подразумеваете значения по умолчанию для каждого байтового элемента, если вы не это имеете в виду, посмотрите на ответ @ sehe.значение по умолчанию для типа:

var Empty = Buffer.All(B => B == default(Byte));
1 голос
/ 30 июня 2011

Байт является типом значения, он не может быть нулевым;

Создание массива немедленно инициализирует элементы к значению по умолчанию для типа элемента.

Это означает, что пустые клетки не могут существовать, не говоря уже о том, чтобы быть обнаруженными.

Если вам необходимо:

  1. использовать обнуляемые типы

    var Buffer = new byte?[1000];

  2. использовать Array.Resize при изменении емкости. Однако вскоре вы можете оказаться в ситуации, когда использование System.Collections.Generic.List будет гораздо более эффективным

0 голосов
/ 22 декабря 2016

В дополнение к данным ответам

            var buffer = new byte[1000];
            var bFree = true;
            foreach (var b in buffer)
            {
                if (b == default(byte)) continue;
                bFree = false;
                break;
            }
...