System.Windows.Forms中的标准枚举:

[Flags]
public enum DragDropEffects
{
    Scroll = -2147483648,
    //
    // Summary:
    //     The combination of the System.Windows.DragDropEffects.Copy, System.Windows.Forms.DragDropEffects.Link,
    //     System.Windows.Forms.DragDropEffects.Move, and System.Windows.Forms.DragDropEffects.Scroll
    //     effects.
    All = -2147483645,
    None = 0,
    Copy = 1,
    Move = 2,
    Link = 4,
}


Scroll的价值相当奇怪,您不觉得吗?

据我了解,这些值都来自"the old times" of COM\OLE DROPEFFECT ...但是为什么首先选择它们呢?作者是否尝试保留8到0x80000000之间的间隔?它在某种程度上有用吗,或者背后有一个有趣的故事,或者它只是YAGNI原则的另一个长期存在的例证?

最佳答案

它是一个状态标志,与主要放置效果(复制/移动/链接)分开。缺少为将来的下降效果留出余地的时候,选择高位允许进行一些诸如检查值是否为负的技巧。与HRESULT或GetAsyncKeyState返回值的想法相同。

关于c# - DragDropEffects.Scroll:为什么-2147483648不是8?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3702066/

10-10 02:51