c# - 无法从“ListMapColor.MyContainer”转换为“System.Drawing.Color”
问题描述
我试着用 Hashset 添加一个列表。
我想做什么?我正在尝试映射 Haset Color 一些图像
为什么 ?因为我想实时比较 Hashset 列表颜色,我需要我自己的库来实时快速获取进程以比较图像
你研究过互联网吗?是的,但我没有找到关于使用 ADD 使用哈希集颜色的信息。
我做了例子有人可以帮助请。
public class ListMapColor
{
public class MyContainer
{
public Color Number { get; set; }
public Color Name { get; set; }
public MyContainer(Color number, Color name)
{
Number = number;
Name = name;
}
}
public HashSet<Color> Battle(HashSet<Color> colors)
{
return colors.Add( new MyContainer (Color.FromArgb(255, 47, 47, 47), Color.FromName("ff2f2f2f") );
}
}
解决方案
在发布的原始代码中,您有一个类型错误,这正是异常告诉您的内容。它需要一个 Color 对象,而您正在给它一个 MyContainer 对象,并且无法在两者之间进行转换。
我的评论建议将您的代码更改为以下内容:
public class ListMapColor
{
public class MyContainer
{
public Color Number { get; set; }
public Color Name { get; set; }
public MyContainer(Color number, Color name)
{
Number = number;
Name = name;
}
}
public HashSet<MyContainer> Battle(HashSet<MyContainer> colors)
{
return colors.Add( new MyContainer (Color.FromArgb(255, 47, 47, 47), Color.FromName("ff2f2f2f") );
}
}
这将修复类型错误。如果你想要一个 Color 对象的 HashSet,你需要添加 Color 对象,而不是 MyContainer 对象。
我不确定您为什么要这样做。
似乎您可能想要以下内容:
HashSet<Color> myColors = new HashSet<Color>();
myColors.Add(Color.FromArgb(255,47,47,47));
myColors.Add(Color.FromName("ff2f2f2f"));
myColors.Add(Color.FromName("AliceBlue"));
然后您可以访问您可能需要的所有 Color 方法:
foreach(Color color in myColors)
{
Console.WriteLine(color.Name);
Console.WriteLine(color.IsKnownColor);
Console.WriteLine(color.ToArgb());
Console.WriteLine(color.IsNamedColor());
}
推荐阅读
- android - 有没有一种优雅的方式在 kotlin 中使用类的私有变量的方法?
- sql - SQL 查询中的“ALL”概念
- typeorm - Typeorm - 类型化关系而不是字符串
- pandas - 打印两列,其中一列有条件?
- google-sheets - 获取最近日期的值
- c# - ASP.NET Core MVC POST 方法一个具有外键 ID 的模型
- javascript - Canvas toBlob 只是生成一个透明图像
- java - VS Code 在行尾插入分号并新建一行
- spring-boot - 如何在spring boot jdbc中从多个具有批量大小的表中执行批量删除
- android - Kotlin - 动态更改bottomNavigationView图标颜色