必须将FlagsAttribute应用于UInt32枚举

时间:2012-09-11 14:06:42

标签: windows-8 microsoft-metro

在阅读了Windows 8应用程序认证要求后,我想知道为什么他们这样说:

•必须将FlagsAttribute应用于UInt32枚举。

•不得将FlagsAttribute应用于Int32枚举。

背后的原因是什么?

目前可以在http://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx

找到认证要求

1 个答案:

答案 0 :(得分:1)

在WinRT中使用Enums有两种情况:枚举值常量和位域值常量。枚举值表单表示为有符号整数(因为它是枚举的),并且位域表单表示为无符号整数(允许所有32位用于标志)。所有位域枚举都需要具有FlagsAttribute。

验证逻辑中的此规则强制在给定FlagsAttribute的值的情况下枚举的基础类型是正确的。

这很重要,因为如果枚举的基础类型已签名,某些语言预测将无法使用FlagsAttribute正确使用枚举。