MethodImplAttributes 列舉

定義

指定方法實作屬性的旗標。

此列舉支援其成員值的位元組合。

此 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
繼承
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

指定方法為單線程通過主體。 靜態方法(Shared 在 Visual Basic)鎖定型別,而實例方法則鎖定實例。 你也可以使用 C# lock 陳述式 或 Visual Basic SyncLock 陳述式來達成此目的。

NoOptimization 64

規定在除錯可能的程式碼產生問題時,該方法不會被即時編譯器(JIT)或原生程式碼產生(見 Ngen.exe)進行最佳化。

PreserveSig 128

規定方法簽名必須完全依照宣告方式匯出。

AggressiveInlining 256

規定方法應盡可能內嵌。

AggressiveOptimization 512

規定方法應盡可能進行最佳化。

SecurityMitigations 1024

此會員保留供未來使用。 它在 .NET Framework 4.8 中被引入。

InternalCall 4096

指定內部通話。

Async 8192
MaxMethodImplVal 65535

指定範圍檢查值。

備註

這些屬性透過位元順序 OR 運算組合如下:

程式碼實作遮罩:

  • CodeTypeMask

  • IL

  • Native

  • OPTIL

  • Runtime

管理口罩:

  • ManagedMask

  • Unmanaged

  • Managed

實作資訊與互操作遮罩:

  • ForwardRef

  • PreserveSig

  • InternalCall

  • Synchronized

  • NoInlining

  • NoOptimization

  • MaxMethodImplVal

  • SecurityMitigations(自 .NET Framework 4.8 起可用)

Note

不建議在 public types 上鎖定實例或類型,就像 flag 一樣 Synchronized ,因為除了你自己的程式碼外,其他程式碼可能會鎖定 public types(公開類型)和實例。 這可能導致死鎖或其他同步問題。

適用於

另請參閱