如果之前已经回答道歉,但我一直在阅读和搜索,但我无法找到答案。
我有一个数组,让我们说string[] myColors = {"red","white","blue"};
,我选择了其中一种颜色,例如通过访问数组的第n个成员:myColors[2]
这将是字符串" blue"。
另外,我有一个类,框,我已经创建了一个实例myBox。该类具有Color类型的属性boxColor。并且该Color类型的可能值包括Color.red = RGB(255,0,0),Color.white = RGB(255,255,255)和Color.blue = RGB(0,0,255)(尽管为了参数的缘故) ,这些枚举值的实际值和类型无关紧要,它们同样可以是float
或任何其他C#类型。
我如何将myBox.boxColor设置为我从myColors[2]
获得的值?
即。像myBox.boxColor = (Color) (value of the string myColors[2]);
在这种情况下,我实际上可以用特定颜色在屏幕上绘图。
答案 0 :(得分:1)
您必须拥有某种类型的映射。我在这里使用词典,但有其他选择。我根据您的问题使用了Color
,但您可以将Color
替换为您选择的任何其他类或结构。
public struct Color
{
int r, g, b;
public Color(int r, int g, int b)
{
this.r = r;
this.g = g;
this.b = b;
}
}
public static class BetterColors
{
static Dictionary<string, Color> colorDictionary = new Dictionary<string, Color>();
static BetterColors()
{
colorDictionary.Add("Red", new Color(255, 2, 4));
colorDictionary.Add("Blue", new Color(0, 3, 251));
colorDictionary.Add("Green", new Color(0, 200, 0));
}
static public Color GetColor(string colorName)
{
return colorDictionary[colorName];
}
}
class Box
{
public Color boxColor { get; set; }
}
class Program
{
static void Main()
{
string[] myColors = { "Red", "Green", "Blue" };
Box myBox = new Box();
myBox.boxColor = BetterColors.GetColor(myColors[1]);
}
}
答案 1 :(得分:0)
这个东西有一个内置的.NET函数,名为Color.FromName
:
Color blue = Color.FromName("Blue");
http://msdn.microsoft.com/en-us/library/system.drawing.color.fromname.aspx
答案 2 :(得分:0)
对于一般情况,您需要一种从字符串转换为正确类型值的方法。如果没有类似于FromName
的函数,那么您可以使用枚举或具有静态字段的类,并使用反射将字符串转换为值。另一种方法是使用字典来映射值。
换句话说,要一般地解决问题,您需要解决方案中特定于类型的元素。否则,例如,你将如何转换字符串&#34;三&#34;到int 3
?