当我在刻录机中插入空白媒体时,我不知道为什么我得到6。根据我的理解,在IMAPI_FORMAT2_DATA_MEDIA_STATE
的枚举状态中没有6个。
以下链接包含此状态以及我所基于的示例:MSDN:Checking Media Support。
var state = dataWriter.CurrentMediaStatus;
Debug.WriteLine((int)state); // outputs 6
答案 0 :(得分:4)
它相当于一个可标记的枚举。 6是4 + 2,所以状态都是
IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE
答案 1 :(得分:4)
它们是两者的组合,基本上按两个(或更多值)计算按位运算。
当您使用属性Flags
创建枚举时,您可以对其执行按位运算,即使它应该在没有属性的情况下工作
IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE
使用IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE执行“OR”操作的IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK的值将给出6 在C#中,它将是值= 2 | 4;
如果您想测试该值是否包含某个选项,您可以继续进行此类操作
if ((value & IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK) == IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK)
{
//IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK is contained
}
您可以阅读有关按位操作的更多信息here