You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中调用Enum.GetValues<KnownColor>()报错,该如何解决?

解决Enum.GetValues()报错的方法

错误原因

你使用的.NET版本低于**.NET 5**,此时Enum类仅提供非泛型的GetValues(Type)方法,不存在泛型重载GetValues<T>(),因此不能通过添加类型实参的方式调用。

解决方案

有两种处理方式:


方式一:升级项目到.NET 5或更高版本

如果项目允许升级框架版本,直接保留原代码即可,泛型版Enum.GetValues<KnownColor>()在.NET 5及以上版本中是原生支持的。


方式二:改用非泛型方法并转换类型

如果无法升级框架,将泛型调用替换为非泛型的Enum.GetValues(typeof(KnownColor)),再通过Cast<KnownColor>()转换为强类型枚举集合:

修改后的代码如下:

private void GetNames()
{
    Color originColor = Color.FromArgb(255, 206, 206, 206);

    // Simplest, but not necessary the best one
    int Distance(Color left, Color right) =>
        Math.Abs(left.R - right.R) +
        Math.Abs(left.G - right.G) +
        Math.Abs(left.B - right.B) +
        Math.Abs(left.A - right.A);
    
    var result = Enum
        .GetValues(typeof(KnownColor))
        .Cast<KnownColor>()
        .MinBy(color => Distance(Color.FromKnownColor(color), originColor));
}

注意需确保代码顶部引用了using System.Linq;,因为Cast<T>()和MinBy()属于LINQ扩展方法。


内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:42:13