ParameterAttributes 列舉


定義可以與參數相關聯的屬性。Defines the attributes that can be associated with a parameter. 這些都在 CorHdr.h 中定義。These are defined in CorHdr.h.

此列舉具有 FlagsAttribute 個屬性允許以位元方式合併其成員值。

public enum class ParameterAttributes
public enum ParameterAttributes
type ParameterAttributes = 
Public Enum ParameterAttributes


HasDefault 4096

指定此參數具有預設值。Specifies that the parameter has a default value.

HasFieldMarshal 8192

指定參數具有欄位封送處理 (Marshaling) 資訊。Specifies that the parameter has field marshaling information.

In 1

指定參數為輸入參數。Specifies that the parameter is an input parameter.

Lcid 4

指定參數為地區設定識別項 (Locale Identifier,LCID)。Specifies that the parameter is a locale identifier (lcid).

None 0

指定沒有參數屬性。Specifies that there is no parameter attribute.

Optional 16

指定參數為選擇項。Specifies that the parameter is optional.

Out 2

指定參數為輸出參數。Specifies that the parameter is an output parameter.

Reserved3 16384


Reserved4 32768


ReservedMask 61440

指定參數為保留的。Specifies that the parameter is reserved.

Retval 8

指定參數為傳回值。Specifies that the parameter is a return value.


下列範例會顯示指定之參數的屬性。The following example displays the attributes of the specified parameter.

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::InteropServices;
public ref class paramatt
   static void mymethod( String^ str1, [Out]interior_ptr<String^> str2, interior_ptr<String^> str3 )
       *str2 = "string";


int main()
   Console::WriteLine( "\nReflection.ParameterAttributes" );
   // Get the Type and the method.
   Type^ Mytype = Type::GetType( "paramatt" );
   MethodBase^ Mymethodbase = Mytype->GetMethod( "mymethod" );
   // Display the method.
   Console::Write( "\nMymethodbase = {0}", Mymethodbase );
   // Get the ParameterInfo array.
   array<ParameterInfo^>^Myarray = Mymethodbase->GetParameters();
   // Get and display the attributes for the second parameter.
   ParameterAttributes Myparamattributes = Myarray[ 1 ]->Attributes;
   Console::Write( "\nFor the second parameter:\nMyparamattributes = {0}, which is an {1}", (int)Myparamattributes, Myparamattributes );
   return 0;

using System;
using System.Reflection;
class paramatt
    public static void mymethod (string str1, out string str2, ref string str3)
        str2 = "string";
    public static int Main(string[] args)
        // Get the Type and the method.
        Type Mytype = Type.GetType("paramatt");
        MethodBase Mymethodbase = Mytype.GetMethod("mymethod");
        // Display the method.
        Console.Write("\nMymethodbase = " + Mymethodbase);
        // Get the ParameterInfo array.
        ParameterInfo[] Myarray = Mymethodbase.GetParameters();
        // Get and display the attributes for the second parameter.
        ParameterAttributes Myparamattributes = Myarray[1].Attributes;
        Console.Write("\nFor the second parameter:\nMyparamattributes = " 
            + (int) Myparamattributes
            + ", which is an "
            + Myparamattributes.ToString());
        return 0;
Imports System.Reflection

Class paramatt

    Public Shared Sub mymethod(ByVal str1 As String, ByRef str2 As String, _
    ByRef str3 As String)
        str2 = "string"
    End Sub

    Public Shared Function Main() As Integer
        Console.WriteLine(ControlChars.CrLf + "Reflection.ParameterAttributes")

        ' Get the Type and the method.
        Dim Mytype As Type = Type.GetType("paramatt")
        Dim Mymethodbase As MethodBase = Mytype.GetMethod("mymethod")

        ' Display the method.
        Console.WriteLine("Mymethodbase = " + Mymethodbase.ToString())

        ' Get the ParameterInfo array.
        Dim Myarray As ParameterInfo() = Mymethodbase.GetParameters()

        ' Get and display the attributes for the second parameter.
        Dim Myparamattributes As ParameterAttributes = Myarray(1).Attributes

        Console.WriteLine("For the second parameter:" + ControlChars.CrLf _
           + "Myparamattributes = " + CInt(Myparamattributes).ToString() _
           + ", which is a " + Myparamattributes.ToString())

        Return 0
    End Function
End Class


若要取得ParameterAttributes此值, 請先Type取得。To get the ParameterAttributes value, first get the Type. TypeParameterInfo取得陣列。From the Type, get the ParameterInfo array. ParameterAttributes值在陣列中。The ParameterAttributes value is within the array.

這些列舉值會相依于選擇性的中繼資料。These enumerator values are dependent on optional metadata. 並非所有的屬性都可以從所有編譯器取得。Not all attributes are available from all compilers. 請參閱適當的編譯器指示, 以判斷可用的列舉值。See the appropriate compiler instructions to determine which enumerated values are available.