ParameterAttributes ParameterAttributes ParameterAttributes ParameterAttributes Enum


Defines the attributes that can be associated with a parameter. These are defined in CorHdr.h.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

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


HasDefault HasDefault HasDefault HasDefault 4096

Specifies that the parameter has a default value.

HasFieldMarshal HasFieldMarshal HasFieldMarshal HasFieldMarshal 8192

Specifies that the parameter has field marshaling information.

In In In In 1

Specifies that the parameter is an input parameter.

Lcid Lcid Lcid Lcid 4

Specifies that the parameter is a locale identifier (lcid).

None None None None 0

Specifies that there is no parameter attribute.

Optional Optional Optional Optional 16

Specifies that the parameter is optional.

Out Out Out Out 2

Specifies that the parameter is an output parameter.

Reserved3 Reserved3 Reserved3 Reserved3 16384


Reserved4 Reserved4 Reserved4 Reserved4 32768


ReservedMask ReservedMask ReservedMask ReservedMask 61440

Specifies that the parameter is reserved.

Retval Retval Retval 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


To get the ParameterAttributes value, first get the Type. From the Type, get the ParameterInfo array. 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.

Applies to