Share via


MemberAttributes Enum

Definisi

Menentukan pengidentifikasi atribut anggota untuk anggota kelas.

public enum class MemberAttributes
public enum MemberAttributes
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum MemberAttributes
type MemberAttributes = 
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type MemberAttributes = 
Public Enum MemberAttributes
Warisan
MemberAttributes
Atribut

Bidang

Abstract 1

Anggota abstrak.

AccessMask 61440

Masker akses.

Assembly 4096

Anggota yang dapat diakses oleh kelas mana pun dalam rakitan yang sama.

Const 5

Anggota konstanta.

Family 12288

Anggota yang dapat diakses dalam keluarga kelas dan kelas turunannya.

FamilyAndAssembly 8192

Anggota yang dapat diakses dalam kelasnya, dan memperoleh kelas dalam rakitan yang sama.

FamilyOrAssembly 16384

Anggota yang dapat diakses dalam kelasnya, kelas turunannya di perakitan apa pun, dan kelas apa pun dalam rakitan yang sama.

Final 2

Anggota yang tidak dapat ditimpa di kelas turunan.

New 16

Anggota baru.

Overloaded 256

Anggota yang kelebihan beban. Beberapa bahasa, seperti Visual Basic, mengharuskan anggota yang kelebihan beban ditunjukkan secara eksplisit.

Override 4

Anggota yang mengambil alih anggota kelas dasar.

Private 20480

Anggota privat.

Public 24576

Anggota publik.

ScopeMask 15

Masker cakupan.

Static 3

Anggota statis. Di Visual Basic, ini setara dengan Shared kata kunci.

VTableMask 240

Masker VTable.

Contoh

Contoh kode berikut menunjukkan penggunaan untuk CodeMemberProperty menentukan string properti dengan get dan set aksesor.

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

Keterangan

Pengidentifikasi yang ditentukan dalam MemberAttributes enumerasi dapat digunakan untuk menunjukkan cakupan dan atribut akses anggota kelas.

Catatan

Tidak ada Virtual atribut anggota. Anggota dinyatakan virtual dengan mengatur akses anggotanya ke Publik (property1.Attributes = MemberAttributes.Public) tanpa menentukannya sebagai Final. Tidak adanya bendera Final membuat anggota virtual di C# (public virtual), overridable di Visual Basic (Public Overridable). Untuk menghindari mendeklarasikan anggota sebagai virtual atau overridable, atur bendera Publik dan Akhir di Attributes properti . Attributes Lihat properti untuk informasi selengkapnya tentang pengaturan atribut anggota.

Catatan

Pola untuk mengatur bendera akses (bendera yang berisi istilah Public, , Private, Assemblyatau Family) adalah menutupi semua bendera akses menggunakan masker AccessMask lalu mengatur bendera akses yang diinginkan. Misalnya, pernyataan kode untuk mengidentifikasi konstruktor (bernama constructor1) sebagai publik adalah constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;. Attributes Mengatur properti langsung ke bendera akses (misalnya, constructor1.Attributes = MemberAttributes.Public;) menghapus semua bendera lain yang mungkin diatur. Pola ini juga harus digunakan untuk mengatur bendera cakupan (Abstract, Final, Static, Override, atau Const) menggunakan masker ScopeMask.

Berlaku untuk

Lihat juga