Avatar billede spif2001 Nybegynder
08. august 2005 - 09:44 Der er 5 kommentarer og
1 løsning

ReadByte returnerer en int. Hvorfor dog det?

Har følgende kode:

private byte[] CreateByteArrayFromFileStream(FileStream fs)
        {
            byte[] toReturn = new byte[fs.Length];
            for(int i = 0; i < fs.Length; i++)
            {
                toReturn[i] = (byte)fs.ReadByte();
            }//for
            return toReturn;
        }

Er er nogen der kan forklare, hvorfor FileStream metoden ReadByte() returnerer en int? Det lyder da fuldstændig ulogisk...
Avatar billede erikjacobsen Ekspert
08. august 2005 - 09:55 #1
Fordi du så kan teste for "end of stream". Fra manuaen

  Return Value
  The byte cast to an int, or -1 if reading from the end of the stream.

Dvs. vi har en værdi, -1, som ligger udenfor de lovlige værdier, som vi bruger som en stopklods. Det var forklaringen - jeg håber ikke du også vil have mig til at overbevise dig om at det er den eneste fornuftige måde at gøre det på... ;)
Avatar billede spif2001 Nybegynder
08. august 2005 - 09:59 #2
ah - se det var jo så en smule logisk alligevel.

smid du bare et svar og lad bare være med at rode dig ud i overbevisninger - jeg tager den med en kop sort kaffe :)
Avatar billede arne_v Ekspert
08. august 2005 - 10:01 #3
et tegn Read som returnerer -1 ved EOF er nok en del af arvegodset fra C

iøvrigt kan du:

private byte[] CreateByteArrayFromFileStream(FileStream fs)
        {
            byte[] toReturn = new byte[fs.Length];
            fs.Read(toReturn, 0, toReturn.Length);
            return toReturn;
        }
Avatar billede spif2001 Nybegynder
08. august 2005 - 15:23 #4
erikjacobsen, du mangler da vist at svare for point?
Avatar billede erikjacobsen Ekspert
08. august 2005 - 15:30 #5
Jeg samler slet ikke på point, tak.
Avatar billede spif2001 Nybegynder
09. august 2005 - 07:57 #6
ok :) - men så mange tak da.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester