MethodImplAttributes 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定方法實作屬性的旗標。
此列舉支援其成員值的位元組合。
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。
public enum class MethodImplAttributes
public enum MethodImplAttributes
[System.Flags]
[System.Serializable]
public enum MethodImplAttributes
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodImplAttributes
type MethodImplAttributes =
[<System.Flags>]
[<System.Serializable>]
type MethodImplAttributes =
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplAttributes =
Public Enum MethodImplAttributes
- 繼承
- 屬性
欄位
| 名稱 | 值 | Description |
|---|---|---|
| IL | 0 | 規定方法實作為 Microsoft 中介語言(MSIL)。 |
| Managed | 0 | 指定該方法以受管程式碼實作。 |
| Native | 1 | 指定方法實作為原生。 |
| OPTIL | 2 | 規定方法實作為最佳化中介語言(OPTIL)。 |
| CodeTypeMask | 3 | 指定關於程式碼類型的旗標。 |
| Runtime | 3 | 指定方法實作由執行時提供。 |
| ManagedMask | 4 | 指定該方法是在受管理程式碼或非受管理程式碼中實作。 |
| Unmanaged | 4 | 指定該方法以非管理程式碼實作。 |
| NoInlining | 8 | 規定該方法不能被內聯化。 |
| ForwardRef | 16 | 指定方法未被定義。 |
| Synchronized | 32 | 指定方法為單線程通過主體。 靜態方法( |
| NoOptimization | 64 | 規定在除錯可能的程式碼產生問題時,該方法不會被即時編譯器(JIT)或原生程式碼產生(見 Ngen.exe)進行最佳化。 |
| PreserveSig | 128 | 規定方法簽名必須完全依照宣告方式匯出。 |
| AggressiveInlining | 256 | 規定方法應盡可能內嵌。 |
| AggressiveOptimization | 512 | 規定方法應盡可能進行最佳化。 |
| SecurityMitigations | 1024 | 此會員保留供未來使用。 它在 .NET Framework 4.8 中被引入。 |
| InternalCall | 4096 | 指定內部通話。 |
| Async | 8192 | |
| MaxMethodImplVal | 65535 | 指定範圍檢查值。 |
備註
這些屬性透過位元順序 OR 運算組合如下:
程式碼實作遮罩:
CodeTypeMaskILNativeOPTILRuntime
管理口罩:
ManagedMaskUnmanagedManaged
實作資訊與互操作遮罩:
ForwardRefPreserveSigInternalCallSynchronizedNoInliningNoOptimizationMaxMethodImplValSecurityMitigations(自 .NET Framework 4.8 起可用)
Note
不建議在 public types 上鎖定實例或類型,就像 flag 一樣 Synchronized ,因為除了你自己的程式碼外,其他程式碼可能會鎖定 public types(公開類型)和實例。 這可能導致死鎖或其他同步問題。