2016-05-23 15 views
4

Werfen Sie einen Blick auf diesen C++ Codes:Enum-Klasse in C++ -replacement- in C#

enum class Flag : int32 { 
    f_unread = (1 << 0), 
    f_out = (1 << 1), 
    f_mentioned = (1 << 4), 

    MAX_FIELD = (1 << 4), 
}; 

Was ist der verdeckte dieser Codes in C#?

+0

Werfen Sie einen Blick auf https://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx. – Thomas

+0

Werfen Sie einen Blick auf https://msdn.microsoft.com/en-us/library/sbbt4032.aspx –

+0

Basierend auf msdn n C# haben wir zwei Namen für die Kombination von enum-Klasse, aber in C++ haben wir einen Namen. – MoonLight

Antwort

5

Using Tangible. Scheint so, als wäre es nicht viel anders.

[Flags] 
public enum Flag : int 
{ 
    f_unread = (1 << 0), 
    f_out = (1 << 1), 
    f_mentioned = (1 << 4), 

    MAX_FIELD = (1 << 4), 
} 

In C#, für Flaggen Betrieb enum als Bit-Feld zu verwenden, sollte es mit FlagsAttribute, die [FlagsAttribute] oder [Flags] vor dem enum fügt hinzu.

+1

Fügen Sie der enum-Deklaration das Attribut [Flags] hinzu, wenn eine Variable dieses Aufzählungstyps eine Kombination der von der Aufzählung definierten Werte enthalten kann. – NineBerry

+0

@NineBerry - fertig, danke. –

+0

Sie brauchen nicht das ': int' - das ist die Standardeinstellung. –