首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历所有颜色?

循环遍历所有颜色?
EN

Stack Overflow用户
提问于 2011-01-29 10:03:35
回答 3查看 7.3K关注 0票数 2

我正在开发C# (Windows-Phone-7)中的一个应用程序,我试图做一些让我感到困惑的简单事情。

我想在颜色中循环每种颜色,并将颜色名称写到一个文件中(以及其他内容)。

我有一小段最简单的代码,我知道这些代码不会工作,但我写了一些入门的代码:

代码语言:javascript
复制
foreach (Color myColor in Colors)
{
}

当然,这会导致以下语法错误:

“System.Windows.Media.Colors”是一个“类型”,但它的用法类似于“变量”。

有没有办法做到这一点?看起来真的很简单!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-29 10:07:40

可以使用此辅助方法获取每种颜色的名称/值对的字典。

代码语言:javascript
复制
public static Dictionary<string,object> GetStaticPropertyBag(Type t)
    {
        const BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

        var map = new Dictionary<string, object>();
        foreach (var prop in t.GetProperties(flags))
        {
            map[prop.Name] = prop.GetValue(null, null);
        }
        return map;
    }

使用方式为:

代码语言:javascript
复制
var colors = GetStaticPropertyBag(typeof(Colors));

foreach(KeyValuePair<string, object> colorPair in colors)
{
     Console.WriteLine(colorPair.Key);
     Color color = (Color) colorPair.Value;
}

helper方法的功劳归功于How can I get the name of a C# static class property using reflection?

票数 10
EN

Stack Overflow用户

发布于 2011-01-29 10:07:57

可以使用Reflection获取颜色类型中的所有属性:

代码语言:javascript
复制
var colorProperties = Colors.GetType().GetProperties(BindingFlags.Static | BindingFlags.Public);
var colors = colorProperties.Select(prop => (Color)prop.GetValue(null, null));
foreach(Color myColor in colors)
{
    // ....
票数 6
EN

Stack Overflow用户

发布于 2011-01-29 10:13:02

你可以通过使用下面的代码来实现。

代码语言:javascript
复制
     List<string> colors = new List<string>();

    foreach (string colorName in Enum.GetNames(typeof(KnownColor)))
    {
        //cast the colorName into a KnownColor
        KnownColor knownColor = (KnownColor)Enum.Parse(typeof(KnownColor), colorName);
        //check if the knownColor variable is a System color
        if (knownColor > KnownColor.Transparent)
        {
            //add it to our list
            colors.Add(colorName);
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4834659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档