OpCodes.TakesSingleByteArgument(OpCode) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt true oder false zurück, wenn der angegebene Opcode ein einzelnes Byte-Argument akzeptiert.
public:
static bool TakesSingleByteArgument(System::Reflection::Emit::OpCode inst);
public static bool TakesSingleByteArgument(System.Reflection.Emit.OpCode inst);
static member TakesSingleByteArgument : System.Reflection.Emit.OpCode -> bool
Public Shared Function TakesSingleByteArgument (inst As OpCode) As Boolean
Parameter
- inst
- OpCode
Eine Instanz eines Opcode-Objekts.
Gibt zurück
true oder false.
Hinweise
Diese Methode kann verwendet werden, um zu ermitteln, welche MSIL-Opcodes "Kurzform" sind, für die Verwendung in optimiertem Code.
TakesSingleByteArgument gibt zurück true , wenn die OpCode Instanz in den folgenden Fällen ein einzelnes Byte-Argument verwendet:
Der Opcode führt eine Verzweigungsanweisung für eine Bytegröße (z Br_S . B. und Bgt_S) aus.
Der Opcode verschiebt einen Bytewert auf den Stapel (z. B Ldc_I4_S. ).
Die Opcode verweist auf eine Variable oder ein Argument über die Bytegröße "Kurzform" (z Ldloc_S . B. und Stloc_S).
Andernfalls wird falsezurückgegeben.
Im folgenden Beispiel wird die Verwendung TakesSingleByteArgument veranschaulicht, indem die Klasse berücksichtigt OpCodes und getestet wird, ob jedes OpCode Feld ein Einzelbyte-Argument verwendet.
public static void Main()
{
// We need a blank OpCode object for reference when calling FieldInfo.GetValue().
OpCode blankOpCode = new OpCode();
Type myOpCodesType = Type.GetType("System.Reflection.Emit.OpCodes");
FieldInfo[] listOfOpCodes = myOpCodesType.GetFields();
Console.WriteLine("Which OpCodes take single-byte arguments?");
Console.WriteLine("-----------------------------------------");
// Now, let's reflect on each FieldInfo and create an instance of the OpCode it represents.
foreach (FieldInfo opCodeFI in listOfOpCodes)
{
object theOpCode = opCodeFI.GetValue(blankOpCode);
Console.WriteLine("{0}: {1}", opCodeFI.Name,
OpCodes.TakesSingleByteArgument((OpCode)theOpCode).ToString());
}
}
Public Shared Sub Main()
' We need a blank OpCode object for reference when calling FieldInfo.GetValue().
Dim blankOpCode As New OpCode()
Dim myOpCodesType As Type = Type.GetType("System.Reflection.Emit.OpCodes")
Dim listOfOpCodes As FieldInfo() = myOpCodesType.GetFields()
Console.WriteLine("Which OpCodes take single-byte arguments?")
Console.WriteLine("-----------------------------------------")
' Now, let's reflect on each FieldInfo and create an instance of the OpCode it represents.
Dim opCodeFI As FieldInfo
For Each opCodeFI In listOfOpCodes
Dim theOpCode As Object = opCodeFI.GetValue(blankOpCode)
Console.WriteLine("{0}: {1}", opCodeFI.Name, _
OpCodes.TakesSingleByteArgument(CType(theOpCode, OpCode)).ToString())
Next opCodeFI
End Sub