2

当我在刻录机中插入空白媒体时,我不知道为什么会得到 6。据我了解,枚举的状态中没有 6 个IMAPI_FORMAT2_DATA_MEDIA_STATE

这是一个包含此状态的链接和我所基于的示例:MSDN:Checking Media Support

var state = dataWriter.CurrentMediaStatus;                        
Debug.WriteLine((int)state); // outputs 6
4

2 回答 2

4

它是两者的组合,基本上是对两者(或更多值)进行按位运算。当您使用该属性进行枚举时,Flags您可以对其进行按位运算,即使它应该在没有该属性的情况下工作

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK 的值与 IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE 的“或”运算将在 C# 中给出 6 值 = 2 | 4;

如果您想测试该值是否包含某个选项,则更进一步,您可以继续执行类似这样的操作

if ((value & IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK) == IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK)
{
//IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK is contained
}

您可以在此处阅读有关按位运算的更多信息

于 2016-01-26T17:17:47.207 回答
4

它相当于一个可标记的枚举。6 是 4 + 2,所以状态都是

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE
于 2016-01-26T17:06:33.607 回答