在阅读了Windows 8应用程序认证要求后,我想知道为什么他们这样说:
•必须将FlagsAttribute应用于UInt32枚举。
•不得将FlagsAttribute应用于Int32枚举。
背后的原因是什么?
目前可以在http://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx
找到认证要求答案 0 :(得分:1)
在WinRT中使用Enums有两种情况:枚举值常量和位域值常量。枚举值表单表示为有符号整数(因为它是枚举的),并且位域表单表示为无符号整数(允许所有32位用于标志)。所有位域枚举都需要具有FlagsAttribute。
验证逻辑中的此规则强制在给定FlagsAttribute的值的情况下枚举的基础类型是正确的。
这很重要,因为如果枚举的基础类型已签名,某些语言预测将无法使用FlagsAttribute正确使用枚举。