Initialisere en byte-array til en bestemt verdi, bortsett fra standardverdien null?

Jeg holder på å skrive om et gammelt prosjekt som ble gjort i C++, til C#.

Min oppgave er å skrive om programmet slik at det fungerer så likt originalen som mulig.

I forbindelse med en del filhåndtering har den forrige utvikleren som skrev dette programmet, laget en struktur med massevis av felter som tilsvarer det angitte formatet som en fil skal skrives i, så alt det arbeidet er allerede gjort for meg.

Alle disse feltene er byte-matriser. Det C++-koden deretter gjør, er å bruke memset til å sette hele denne strukturen til alle mellomromstegn (0x20). Én kodelinje. Det er enkelt.

Dette er svært viktig, siden verktøyet som denne filen til slutt sendes til, forventer at filen har dette formatet. Det jeg har måttet gjøre, er å endre denne strukturen til en klasse i C#, men jeg finner ingen måte å enkelt initialisere hver av disse bytearrayene til alle mellomromstegn.

Det jeg har endt opp med å måtte gjøre er dette i klassekonstruktøren:

//Initialize all of the variables to spaces.
int index = 0;
foreach (byte b in UserCode)
{
    UserCode[index] = 0x20;
    index++;
}

Dette fungerer fint, men det finnes sikkert en enklere måte å gjøre dette på. Når arrayet settes til UserCode = new byte[6] i konstruktøren, blir byte-arrayet automatisk initialisert til standard null-verdier. Er det ingen måte at jeg kan gjøre det blir alle mellomrom ved deklarasjon, slik at når jeg kaller min class' constructor at det er initialisert med en gang som dette? Eller noen memset-lignende funksjon?

Bruk denne til å opprette matrisen i utgangspunktet:

byte[] array = Enumerable.Repeat((byte)0x20, ).ToArray();

Erstatt `` med ønsket matrisestørrelse.

Kommentarer (7)

Du kan bruke Enumerable.Repeat().

Matrise med 100 elementer initialisert til 0x20:

byte[] arr1 = Enumerable.Repeat(0x20,100).ToArray();
Kommentarer (4)

Du kan bruke en collection initializer:

UserCode = new byte[]{0x20,0x20,0x20,0x20,0x20,0x20};

Dette vil fungere bedre enn Repeat hvis verdiene ikke er identiske.

Kommentarer (2)