MethodImplOptions Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje konstanty, které definují podrobnosti o způsobu implementace metody.
Tento výčet podporuje bitové kombinace hodnot jeho členů.
public enum class MethodImplOptions
[System.Flags]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodImplOptions
[<System.Flags>]
type MethodImplOptions =
[<System.Flags>]
[<System.Serializable>]
type MethodImplOptions =
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplOptions =
Public Enum MethodImplOptions
- Dědičnost
- Atributy
Pole
AggressiveInlining | 256 | Metoda by měla být vložena, pokud je to možné. Nepotřebné použití tohoto atributu může snížit výkon. Atribut může způsobit, že dojde k limitům implementace, které budou mít za následek pomalejší vygenerovaný kód. Vždy změřte výkon, abyste zajistili, že je užitečné použít tento atribut. |
AggressiveOptimization | 512 | Metoda obsahuje kód, který by měl být vždy optimalizován pro výkon. Tento atribut je vhodné použít jen zřídka. Metody, které tento atribut používají, obcházejí první úroveň vrstvené kompilace , a proto nemají užitek z optimalizací, které závisí na vrstvené kompilaci. Tyto optimalizace zahrnují dynamické PGO a optimalizace založené na inicializovaných třídách. Použití tohoto atributu může také zvýšit využití paměti. Vždy změřte výkon, abyste zajistili, že je užitečné použít tento atribut. |
ForwardRef | 16 | Metoda je deklarována, ale její implementace je k dispozici jinde. |
InternalCall | 4096 | Volání je interní, to znamená, že volá metodu, která je implementovaná v rámci modulu CLR (Common Language Runtime). |
NoInlining | 8 | Metoda nemůže být vložena. Inlining je optimalizace, při které je volání metody nahrazeno tělem metody. |
NoOptimization | 64 | Metoda není při ladění možných problémů s generováním kódu optimalizovaná kompilátorem JIT (just-in-time) ani generováním nativního kódu (viz Ngen.exe). |
PreserveSig | 128 | Podpis metody se exportuje přesně tak, jak je deklarováno. |
SecurityMitigations | 1024 | Tento člen je vyhrazen pro budoucí použití. Byl zaveden v rozhraní .NET Framework 4.8. |
Synchronized | 32 | Metoda může být spuštěna pouze jedním vláknem najednou. Statické metody uzamknou typ, zatímco metody instance uzamknou instanci. V některé z funkcí instance může být spuštěno pouze jedno vlákno a pouze jedno vlákno může spustit v libovolné statické funkci třídy. |
Unmanaged | 4 | Metoda je implementována v nespravovaném kódu. |
Poznámky
Tento výčet se používá s atributem MethodImplAttribute .
Více hodnot můžete zadat MethodImplOptions pomocí bitového operátoru OR.
Poznámka
Uzamčení instance nebo typu, jako u příznaku Synchronized
, se nedoporučuje pro veřejné typy, protože jiný kód než váš vlastní může převzít zámky na veřejných typech a instancích. To může způsobit zablokování nebo jiné problémy se synchronizací.