gpt4 book ai didi

c# - 为什么我必须在 C# 中将枚举转换为 int?

转载 作者:太空狗 更新时间:2023-10-29 17:30:50 28 4
gpt4 key购买 nike

这是我的代码:

internal enum WindowsMessagesFlags {
WM_EXITSIZEMOVE = 0x00000232,
WM_DISPLAYCHANGE = 0x0000007e,
WM_MOVING = 0x00000216,
}

protected override void WndProc(ref Message m) {
switch(m.Msg) {
case (int)WindowsMessagesFlags.WM_DISPLAYCHANGE:
FixWindowSnapping();
break;
case (int)WindowsMessagesFlags.WM_EXITSIZEMOVE:
SaveWindowProperties();
break;
case (int)WindowsMessagesFlags.WM_MOVING:
KeepProperLocation(ref m);
break;
}
}

有什么办法可以防止转换吗?

最佳答案

某种程度上 - 改为使用 m.Msg:

protected override void WndProc(ref Message m) {
switch((WindowsMessagesFlags) m.Msg) {
case WindowsMessagesFlags.WM_DISPLAYCHANGE:
FixWindowSnapping();
break;
case WindowsMessagesFlags.WM_EXITSIZEMOVE:
SaveWindowProperties();
break;
case WindowsMessagesFlags.WM_MOVING:
KeepProperLocation(ref m);
break;
}
}

之所以需要强制转换,是因为在 C# 中,枚举不仅仅是数字——它们是与类型相关联的数字。这会阻止你做(不转换):

HttpStatusCode status = someWindowsMessageFlag;

这显然是一件好事 :) 但是,当您需要时,您始终可以“通过”基础类型(在本例中为 int)。

关于c# - 为什么我必须在 C# 中将枚举转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com