MemberAttributes Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje identyfikatory atrybutów składowych dla składowych klasy.
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
- Dziedziczenie
- Atrybuty
Pola
Abstract | 1 | Abstrakcyjny element członkowski. |
AccessMask | 61440 | Maska dostępu. |
Assembly | 4096 | Składowa, która jest dostępna dla dowolnej klasy w tym samym zestawie. |
Const | 5 | Stały element członkowski. |
Family | 12288 | Składowa, która jest dostępna w rodzinie jej klas i klas pochodnych. |
FamilyAndAssembly | 8192 | Składowa, która jest dostępna w ramach klasy i klasy pochodne w tym samym zestawie. |
FamilyOrAssembly | 16384 | Składowa, która jest dostępna w ramach klasy, jej klas pochodnych w dowolnym zestawie i dowolnej klasie w tym samym zestawie. |
Final | 2 | Składowa, której nie można zastąpić w klasie pochodnej. |
New | 16 | Nowy element członkowski. |
Overloaded | 256 | Przeciążony element członkowski. Niektóre języki, takie jak Visual Basic, wymagają jawnego wskazania przeciążonych elementów członkowskich. |
Override | 4 | Składowa, która zastępuje składową klasy bazowej. |
Private | 20480 | Prywatny element członkowski. |
Public | 24576 | Członek publiczny. |
ScopeMask | 15 | Maska zakresu. |
Static | 3 | Statyczny element członkowski. W języku Visual Basic jest to odpowiednik słowa kluczowego |
VTableMask | 240 | Maska VTable. |
Przykłady
Poniższy przykładowy kod demonstruje użycie elementu CodeMemberProperty , aby zdefiniować string
właściwość z elementami get
i set
metodami dostępu.
// 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
Uwagi
Identyfikatory zdefiniowane w wyliczenie MemberAttributes mogą służyć do wskazywania zakresu i atrybutów dostępu składowej klasy.
Uwaga
Virtual
Brak atrybutu elementu członkowskiego. Element członkowski jest zadeklarowany jako wirtualny, ustawiając dostęp do elementu członkowskiego do publicznej (property1.Attributes = MemberAttributes.Public
) bez określania go jako Końcowy. Brak flagi Final sprawia, że element członkowski virtual
w języku C# (public virtual
) overridable
w Visual Basic (Public Overridable
). Aby uniknąć deklarowania elementu członkowskiego jako virtual
lub overridable
, ustaw flagi Publiczne i Końcowe we Attributes właściwości . Zobacz właściwość , Attributes aby uzyskać więcej informacji na temat ustawiania atrybutów elementów członkowskich.
Uwaga
Wzorzec ustawiania flag dostępu (flag zawierających terminy Public
, Private
, Assembly
lub Family
) jest maskowanie wszystkich flag dostępu przy użyciu maski maski programu AccessMask, a następnie ustawienie żądanej flagi dostępu. Na przykład instrukcja kodu identyfikująca konstruktor (o nazwie constructor1
) jako publiczny to constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
. Attributes Ustawienie właściwości bezpośrednio na flagę dostępu (na przykład constructor1.Attributes = MemberAttributes.Public;
) powoduje wymazywanie wszystkich innych flag, które mogą być ustawione. Ten wzorzec powinien być również używany do ustawiania flag zakresu (Abstract, Final, Static, Override lub Const) przy użyciu maski Maska zakresu.
Dotyczy
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla