Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.