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


CA1028: Az enumerálási tárolónak Int32-nek kell lennie

Tulajdonság Érték
Szabályazonosító CA1028
Cím Az enumerálási tárolónak Int32-nek kell lennie
Kategória Design
A javítás kompatibilitástörő vagy nem törik Törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Az enumerálás mögöttes típusa nem System.Int32.

Alapértelmezés szerint ez a szabály csak külsőleg látható enumerálásokat tekint meg, de ez konfigurálható.

Szabály leírása

Az enumerálás olyan értéktípus, amely a kapcsolódó elnevezett állandók készletét határozza meg. Alapértelmezés szerint az System.Int32 adattípus az állandó érték tárolására szolgál. Annak ellenére, hogy módosíthatja ezt az alapul szolgáló típust, a legtöbb forgatókönyv esetében nem szükséges vagy ajánlott. Nem érhető el jelentős teljesítménynövekedés olyan adattípussal, amely kisebb, mint Int32. Ha nem tudja használni az alapértelmezett adattípust, a Common Language System (CLS)-kompatibilis integráltípusok egyikét kell használnia, ByteInt16Int32vagy Int64 győződjön meg arról, hogy az enumerálás összes értéke megjeleníthető a CLS-kompatibilis programozási nyelvekben.

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

A szabály megsértésének kijavításához, ha nincs méret- vagy kompatibilitási probléma, használja a következőt Int32: . Olyan helyzetekben, ahol Int32 nem elég nagy az értékek tárolásához, használja a .Int64 Ha a visszamenőleges kompatibilitás kisebb adattípust igényel, használja Byte vagy Int16.

Mikor kell letiltani a figyelmeztetéseket?

Csak akkor tiltsa le a figyelmeztetést ebből a szabályból, ha a visszamenőleges kompatibilitási problémák megkövetelik. Az alkalmazásokban a szabály betartásának elmulasztása általában nem okoz problémát. A kódtárakban, ahol a nyelvi együttműködésre van szükség, a szabály betartásának elmulasztása hátrányosan érintheti a felhasználókat.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1028
// The code that's violating the rule is on this line.
#pragma warning restore CA1028

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1028.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak ehhez a szabályhoz, az összes szabályhoz, vagy az ebben a kategóriában (Tervezés) szereplő összes szabályhoz, amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Példa

Az alábbi példa két olyan enumerációt mutat be, amelyek nem a javasolt alapul szolgáló adattípust használják.

[Flags]
public enum Days : uint
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    All = Monday | Tuesday | Wednesday | Thursday | Friday
}

public enum Color : sbyte
{
    None = 0,
    Red = 1,
    Orange = 3,
    Yellow = 4
}
<Flags()>
Public Enum Days As UInteger
    None = 0
    Monday = 1
    Tuesday = 2
    Wednesday = 4
    Thursday = 8
    Friday = 16
    All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum

Public Enum Color As SByte
    None = 0
    Red = 1
    Orange = 3
    Yellow = 4
End Enum

Az alábbi példa az alapul szolgáló adattípus Int32módosításával kijavítja az előző szabálysértést.

[Flags]
public enum Days : int
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    All = Monday | Tuesday | Wednesday | Thursday | Friday
}

public enum Color : int
{
    None = 0,
    Red = 1,
    Orange = 3,
    Yellow = 4
}
<Flags()>
Public Enum Days As Integer
    None = 0
    Monday = 1
    Tuesday = 2
    Wednesday = 4
    Thursday = 8
    Friday = 16
    All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum

Public Enum Color As Integer
    None = 0
    Red = 1
    Orange = 3
    Yellow = 4
End Enum

Kapcsolódó információk