gpt4 book ai didi

c# - 枚举扩展生成垃圾

转载 作者:行者123 更新时间:2023-11-30 20:48:17 29 4
gpt4 key购买 nike

我有以下内容;

public static bool Has<T>(this System.Enum type, T value) where T : struct
{
return (((int)(ValueType)type & (int)(ValueType)value) == (int)(ValueType)value);
}

出于某种原因,调用此扩展方法会产生垃圾,我根本不明白为什么。这里的一切都是结构或值。那些看不见的垃圾在哪里?是否有一些不那么明显的拳击正在进行?有没有更好的方法来做这个扩展方法?

最佳答案

转换为 ValueType 有效地装箱对象(注意 ValueType ,而“值类型的基类”是一个 ),然后转换int 将其拆箱。如果枚举的基础类型恰好不是 Int32 之外的其他类型,这也将失败,这也是可能的。

您应该能够使用 Enum.HasFlag无需自定义方法即可完成相同的功能。

关于c# - 枚举扩展生成垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24831206/

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