MemberAttributes 列挙型


クラス メンバーのメンバー属性識別子を定義します。Defines member attribute identifiers for class members.

public enum class MemberAttributes
public enum MemberAttributes
type MemberAttributes = 
Public Enum MemberAttributes


Abstract 1

抽象メンバー。An abstract member.

AccessMask 61440

アクセス マスク。An access mask.

Assembly 4096

同じアセンブリ内の任意のクラスにアクセスできるメンバー。A member that is accessible to any class within the same assembly.

Const 5

定数メンバー。A constant member.

Family 12288

クラスと派生クラスのファミリ内にアクセスできるメンバー。A member that is accessible within the family of its class and derived classes.

FamilyAndAssembly 8192

クラス内および同じアセンブリの派生クラスにアクセスできるメンバー。A member that is accessible within its class, and derived classes in the same assembly.

FamilyOrAssembly 16384

クラス内、任意のアセンブリの派生クラス、および同じアセンブリの任意のクラスにアクセスできるメンバー。A member that is accessible within its class, its derived classes in any assembly, and any class in the same assembly.

Final 2

派生クラスでオーバーライドできないメンバー。A member that cannot be overridden in a derived class.

New 16

新規メンバー。A new member.

Overloaded 256

オーバーロードされたメンバー。An overloaded member. Visual Basic などの一部の言語では、オーバーロードされたメンバーを明示的に示す必要があります。Some languages, such as Visual Basic, require overloaded members to be explicitly indicated.

Override 4

基本クラス メンバーをオーバーライドするメンバー。A member that overrides a base class member.

Private 20480

プライベート メンバー。A private member.

Public 24576

パブリック メンバー。A public member.

ScopeMask 15

スコープ マスク。A scope mask.

Static 3

静的メンバー。A static member. このメンバーは、Visual Basic の Shared キーワードと等価です。In Visual Basic, this is equivalent to the Shared keyword.

VTableMask 240

VTable マスク。A VTable mask.

次のコード例は、CodeMemberProperty を使用して、getset アクセサーを持つ string プロパティを定義する方法を示しています。The following example code demonstrates use of a CodeMemberProperty to define a string property with get and set accessors.

// Declares a property of type String named StringProperty.
CodeMemberProperty^ property1 = gcnew CodeMemberProperty;
property1->Name = "StringProperty";
property1->Type = gcnew CodeTypeReference( "System.String" );
property1->Attributes = MemberAttributes::Public;
property1->GetStatements->Add( gcnew CodeMethodReturnStatement( gcnew CodeFieldReferenceExpression( gcnew CodeThisReferenceExpression,"testStringField" ) ) );
property1->SetStatements->Add( gcnew CodeAssignStatement( gcnew CodeFieldReferenceExpression( gcnew CodeThisReferenceExpression,"testStringField" ),gcnew CodePropertySetValueReferenceExpression ) );

// A C# code generator produces the following source code for the preceeding example code:
//       public virtual string StringProperty
//       {
//              get
//            {
//                return this.testStringField;
//            }
//            set
//            {
//                this.testStringField = value;
//            }
//       }
// Declares a property of type String named StringProperty.
CodeMemberProperty property1 = new CodeMemberProperty();
property1.Name = "StringProperty";
property1.Type = new CodeTypeReference("System.String");
property1.Attributes = MemberAttributes.Public;
property1.GetStatements.Add( new CodeMethodReturnStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "testStringField") ) );
property1.SetStatements.Add( new CodeAssignStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "testStringField"), new CodePropertySetValueReferenceExpression()));

// A C# code generator produces the following source code for the preceeding example code:

//       public virtual string StringProperty 
//       {
//              get 
//            {
//                return this.testStringField;
//            }
//            set 
//            {
//                this.testStringField = value;
//            }
//       }            
' Declares a property of type String named StringProperty.
Dim property1 As New CodeMemberProperty()
property1.Name = "StringProperty"
property1.Type = New CodeTypeReference("System.String")
property1.Attributes = MemberAttributes.Public
property1.GetStatements.Add(New CodeMethodReturnStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression(), "testStringField")))
property1.SetStatements.Add(New CodeAssignStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression(), "testStringField"), New CodePropertySetValueReferenceExpression()))

' A Visual Basic code generator produces the following source code for the preceeding example code:

'     Public Overridable Property StringProperty() As String
'         Get
'             Return Me.testStringField
'         End Get
'         Set(ByVal Value As String)
'             Me.testStringField = value
'         End Set
'     End Property


MemberAttributes 列挙体で定義された識別子を使用して、クラスメンバーのスコープとアクセス属性を示すことができます。The identifiers defined in the MemberAttributes enumeration can be used to indicate the scope and access attributes of a class member.


Virtual メンバー属性がありません。There is no Virtual member attribute. メンバーが virtual として宣言されているのは、メンバーのアクセスを Public (property1.Attributes = MemberAttributes.Public) に設定し、Final として指定する必要がありません。A member is declared virtual by setting its member access to Public (property1.Attributes = MemberAttributes.Public) without specifying it as Final. Final フラグがないと、メンバー virtual C# (public virtual) になり、Visual Basic (Public Overridable) に overridable ます。The absence of the Final flag makes a member virtual in C# (public virtual), overridable in Visual Basic (Public Overridable). メンバーを virtual または overridableとして宣言しないようにするには、Attributes プロパティで、Public と Final の両方のフラグを設定します。To avoid declaring the member as virtual or overridable, set both the Public and Final flags in the Attributes property. メンバー属性の設定の詳細については、Attributes プロパティを参照してください。See the Attributes property for more information on setting member attributes.


アクセスフラグ (語句 PublicPrivateAssembly、または Family) を設定するためのパターンでは、AccessMask mask を使用してすべてのアクセスフラグをマスクアウトし、必要なアクセスフラグを設定します。The pattern for setting the access flags (flags containing the terms Public, Private, Assembly, or Family) is to mask out all access flags using the AccessMask mask and then set the desired access flag. たとえば、コンストラクター (名前は constructor1) をパブリックとして識別するコードステートメントが constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;ます。For example, the code statement to identify a constructor (named constructor1) as public is constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;. Attributes プロパティを直接アクセスフラグ (たとえば、constructor1.Attributes = MemberAttributes.Public;) に設定すると、設定されている可能性のある他のすべてのフラグが消去されます。Setting the Attributes property directly to an access flag (for example, constructor1.Attributes = MemberAttributes.Public;) erases all other flags that might be set. このパターンは、ScopeMask mask を使用してスコープフラグ (Abstract、Final、Static、Override、または Const) を設定するためにも使用する必要があります。This pattern should also be used for setting the scope flags (Abstract, Final, Static, Override or Const) using the ScopeMask mask.