FieldAttributes 枚举 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定描述字段属性的标志。
此枚举支持其成员值的按位组合。
public enum class FieldAttributes[System.Flags]
public enum FieldAttributes[System.Flags]
[System.Serializable]
public enum FieldAttributes[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum FieldAttributes[<System.Flags>]
type FieldAttributes = [<System.Flags>]
[<System.Serializable>]
type FieldAttributes = [<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldAttributes = Public Enum FieldAttributes- 继承
- 属性
字段
| 名称 | 值 | 说明 | 
|---|---|---|
| Assembly | 3 | 指定该字段可由整个程序集访问。 | 
| FamANDAssem | 2 | 指定该字段只能由此程序集中的子类型访问。 | 
| Family | 4 | 指定该字段只能由类型和子类型访问。 | 
| FamORAssem | 5 | 指定该字段可由任意位置的子类型访问,也可由整个程序集访问。 | 
| FieldAccessMask | 7 | 指定给定字段的访问级别。 | 
| HasDefault | 32768 | 指定该字段具有默认值。 | 
| HasFieldMarshal | 4096 | 指定该字段包含封送处理信息。 | 
| HasFieldRVA | 256 | 指定该字段具有相对虚拟地址 (RVA)。 RVA 是方法体在当前图像中的位置,它是相对于它所在的图像文件的开始的地址。 | 
| InitOnly | 32 | 指明该字段只能初始化,只可在构造函数的函数体中设置。 | 
| Literal | 64 | 指定该字段的值是一个编译时(静态或早期绑定)常数。 设置它的任何试图将引出 FieldAccessException。 | 
| NotSerialized | 128 | 指定扩展类型时不必序列化该字段。 | 
| PinvokeImpl | 8192 | 留待将来使用。 | 
| Private | 1 | 指定该字段只能由父类型访问。 | 
| PrivateScope | 0 | 指定该字段不能被引用。 | 
| Public | 6 | 指定该字段可由任何可看见此范围的成员访问。 | 
| ReservedMask | 38144 | 保留。 | 
| RTSpecialName | 1024 | 指定公共语言运行时(元数据内部 API)应检查名称编码。 | 
| SpecialName | 512 | 指定一个特殊方法,并用名称说明该方法的特殊性。 | 
| Static | 16 | 指定该字段表示已定义的类型,否则为每实例方式。 | 
示例
在此示例中,将生成三个字段并 FieldAttributes 显示值。 值 FieldAttributes 可以包含多个属性,例如 和 PublicLiteral,如第三个字段中所示。
using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;
public ref class Demo
{
private:
    // Make three fields:
    // The first field is private.
    String^ m_field;
    // The second field is public.
public:
    String^ Field;
    // The third field is public and literal. 
    literal String^ FieldC = "String C";
    Demo() { m_field = "String A"; Field = "String B"; }
};
static void DisplayField(Object^ obj, FieldInfo^ f)
{ 
    // Display the field name, value, and attributes.
    //
    Console::WriteLine("{0} = \"{1}\"; attributes: {2}", 
        f->Name, f->GetValue(obj), f->Attributes);
};
void main()
{
    Console::WriteLine ("\nReflection.FieldAttributes");
    Demo^ d = gcnew Demo();
    // Get a Type object for Demo, and a FieldInfo for each of
    // the three fields. Use the FieldInfo to display field
    // name, value for the Demo object in d, and attributes.
    //
    Type^ myType = Demo::typeid;
    FieldInfo^ fiPrivate = myType->GetField("m_field",
        BindingFlags::NonPublic | BindingFlags::Instance);
    DisplayField(d, fiPrivate);
    FieldInfo^ fiPublic = myType->GetField("Field",
        BindingFlags::Public | BindingFlags::Instance);
    DisplayField(d, fiPublic);
    FieldInfo^ fiConstant = myType->GetField("FieldC",
        BindingFlags::Public | BindingFlags::Static);
    DisplayField(d, fiConstant);
}
/* This code example produces the following output:
Reflection.FieldAttributes
m_field = "String A"; attributes: Private
Field = "String B"; attributes: Public
FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
 */
using System;
using System.Reflection;
public class Demo
{
    // Make three fields:
    // The first field is private.
    private string m_field = "String A";
    // The second field is public.
    public string Field = "String B";
    // The third field is public const (hence also literal and static),
    // with a default value.
    public const string FieldC = "String C";
}
public class Myfieldattributes
{
    public static void Main()
    {
        Console.WriteLine ("\nReflection.FieldAttributes");
        Demo d = new Demo();
        // Get a Type object for Demo, and a FieldInfo for each of
        // the three fields. Use the FieldInfo to display field
        // name, value for the Demo object in d, and attributes.
        //
        Type myType = typeof(Demo);
        FieldInfo fiPrivate = myType.GetField("m_field",
            BindingFlags.NonPublic | BindingFlags.Instance);
        DisplayField(d, fiPrivate);
        FieldInfo fiPublic = myType.GetField("Field",
            BindingFlags.Public | BindingFlags.Instance);
        DisplayField(d, fiPublic);
        FieldInfo fiConstant = myType.GetField("FieldC",
            BindingFlags.Public | BindingFlags.Static);
        DisplayField(d, fiConstant);
    }
    static void DisplayField(Object obj, FieldInfo f)
    {
        // Display the field name, value, and attributes.
        //
        Console.WriteLine("{0} = \"{1}\"; attributes: {2}",
            f.Name, f.GetValue(obj), f.Attributes);
    }
}
/* This code example produces the following output:
Reflection.FieldAttributes
m_field = "String A"; attributes: Private
Field = "String B"; attributes: Public
FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
 */
Imports System.Reflection
Public Class Demo
    ' Declare three fields.
    ' The first field is private.
    Private m_field As String = "String A"
    'The second field is public.
    Public Field As String = "String B"
    ' The third field is public and const, hence also static
    ' and literal with a default value.
    Public Const FieldC As String = "String C"
End Class
Module Module1
    Sub Main()
        ' Create an instance of the Demo class.
        Dim d As New Demo()
        Console.WriteLine(vbCrLf & "Reflection.FieldAttributes")
        ' Get a Type object for Demo, and a FieldInfo for each of
        ' the three fields. Use the FieldInfo to display field
        ' name, value for the Demo object in d, and attributes.
        '
        Dim myType As Type = GetType(Demo)
        Dim fiPrivate As FieldInfo = myType.GetField("m_field", _
            BindingFlags.NonPublic Or BindingFlags.Instance)
        DisplayField(d, fiPrivate)
        Dim fiPublic As FieldInfo = myType.GetField("Field", _
            BindingFlags.Public Or BindingFlags.Instance)
        DisplayField(d, fiPublic)
        Dim fiConstant As FieldInfo = myType.GetField("FieldC", _
            BindingFlags.Public Or BindingFlags.Static)
        DisplayField(d, fiConstant)
    End Sub
    Sub DisplayField(ByVal obj As Object, ByVal f As FieldInfo)
        ' Display the field name, value, and attributes.
        '
        Console.WriteLine("{0} = ""{1}""; attributes: {2}", _
            f.Name, f.GetValue(obj), f.Attributes)
    End Sub
End Module
' This code example produces the following output:
'
'm_field = "String A"; attributes: Private
'Field = "String B"; attributes: Public
'FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
注解
              FieldAttributes 使用 的值仅 FieldAccessMask 屏蔽与辅助功能相关的属性值部分。 例如,以下代码确定是否 Attributes 设置了公共位。
FieldInfo^ fi = obj->GetType()->GetField("field1");
if ((fi->Attributes & FieldAttributes::FieldAccessMask) ==
    FieldAttributes::Public)
{
    Console::WriteLine("{0:s} is public. Value: {1:d}", fi->Name, fi->GetValue(obj));
}
FieldInfo fi = obj.GetType().GetField("field1");
if ((fi.Attributes & FieldAttributes.FieldAccessMask) ==
    FieldAttributes.Public)
{
    Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj));
}
Dim fi As FieldInfo = obj.GetType().GetField("field1")
If (fi.Attributes And FieldAttributes.FieldAccessMask) = _
    FieldAttributes.Public Then
    Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj))
End If
若要获取 , FieldAttributes请先获取 类 Type。 
              Type从 中获取 FieldInfo。 
              FieldInfo从 中获取 Attributes。
枚举值是一个数字,表示在 字段上实现的属性的按位 OR。