Megosztás a következőn keresztül:


CA2022: A Stream.Read használatával elkerülheti a nem praktikus olvasást

Tulajdonság Érték
Szabályazonosító CA2022
Cím A Stream.Read használatával kerülje a nem praktikus olvasást
Kategória Megbízhatóság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 9-ben Figyelmeztetésként

Ok

Hívás Stream.ReadStream.ReadAsync vagy hívás történik, és a visszatérési érték nincs bejelölve.

Szabály leírása

Stream.Read és Stream.ReadAsync a kértnél kevesebb bájtot ad vissza, ami megbízhatatlan kódot eredményez, ha a visszatérési érték nincs bejelölve.

Szabálysértések kijavítása

A szabálysértés kijavításához ellenőrizze a visszatérési értéket (amely a pufferbe beolvasott bájtok teljes száma), vagy hívja Stream.ReadExactly meg vagy Stream.ReadExactlyAsync inkább.

Példa

Az alábbi kódrészlet a CA2022 megsértését és a szabálysértés kijavítását mutatja be.

void M1(Stream stream, byte[] buffer)
{
    // CA2022 violation.
    stream.Read(buffer, 0, buffer.Length);

    // Fix for the violation.
    stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
    ' CA2022 violation.
    stream.Read(buffer, 0, buffer.Length)

    ' Fix for the violation.
    stream.ReadExactly(buffer)
End Sub

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa le a szabály figyelmeztetéseit, mert előfordulhat, hogy az alkalmazás lefagy, ha nem oldja meg a szabálysértéseket.

Lásd még