我有以下代碼:FlagsAttribute Enum在C#中的行爲是什麼?
namespace ConsoleApplication1
{
internal class Program
{
[FlagsAttribute]
private enum RenderType
{
DataUri = 0,
GZip = 1,
ContentPage = 2,
ViewPage = 4,
HomePage = 8
}
private static void Main()
{
// 4.
// Set a new enum in three statements.
RenderType type2 = RenderType.ViewPage;
// 5.
// See if the enum contains this flag.
if ((type2 & RenderType.ViewPage) == RenderType.ViewPage)
{
Console.WriteLine("ViewPage");
}
if ((type2 & RenderType.DataUri) == RenderType.DataUri)
{
Console.WriteLine("DataUri");
}
if ((type2 & RenderType.GZip) == RenderType.GZip)
{
Console.WriteLine("GZip");
}
}
}
}
每當我運行此代碼,它給我的輸出:
的ViewPage DataUri
我只想的ViewPage的輸出,因爲我給值給我的枚舉ViewPage。
任何人都可以幫助我嗎?爲什麼是這樣?我的Enum聲明或代碼有什麼問題嗎?
小澄清:其實,有沒有** * * C#中[Flags]的特定行爲 - 它的行爲與任何'enum'(或整數)完全相同。 ** BCL **有一些'[Flags]'處理(例如序列化),就像一些IDE工具一樣。但*語言*:不關心'[Flags]'的一個iota。 – 2012-02-21 09:28:17