当我在刻录机中插入空白媒体时,我不知道为什么会得到 6。据我了解,枚举的状态中没有 6 个IMAPI_FORMAT2_DATA_MEDIA_STATE
。
这是一个包含此状态的链接和我所基于的示例:MSDN:Checking Media Support。
var state = dataWriter.CurrentMediaStatus;
Debug.WriteLine((int)state); // outputs 6
当我在刻录机中插入空白媒体时,我不知道为什么会得到 6。据我了解,枚举的状态中没有 6 个IMAPI_FORMAT2_DATA_MEDIA_STATE
。
这是一个包含此状态的链接和我所基于的示例:MSDN:Checking Media Support。
var state = dataWriter.CurrentMediaStatus;
Debug.WriteLine((int)state); // outputs 6
它是两者的组合,基本上是对两者(或更多值)进行按位运算。当您使用该属性进行枚举时,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
}
您可以在此处阅读有关按位运算的更多信息
它相当于一个可标记的枚举。6 是 4 + 2,所以状态都是
IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE