soo*_*ise 13 c# enums winforms
可能重复:
C#枚举作为函数参数?
我想知道如何将枚举类型作为方法参数传递.
我正在尝试创建一个通用方法,它将采用一个组合框,枚举,并用枚举的每个项填充组合框.
参考将Enum转换为字典:
public static IDictionary<String, Int32> ConvertEnumToDictionary<K>()
{
if (typeof(K).BaseType != typeof(Enum))
{
throw new InvalidCastException();
}
return Enum.GetValues(typeof(K)).Cast<Int32>().ToDictionary(currentItem => Enum.GetName(typeof(K), currentItem));
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用返回的字典项填充ComboBox.
请参阅以下内容:
你可以像这样传递一个枚举:
private void Method(Enum tEnum)
{
Enum.GetValues(tEnum.GetType());
}
Run Code Online (Sandbox Code Playgroud)
并且GetValues将为您提供该枚举可能的值.
用法有点奇怪:
Method(EnumType.Value)
Run Code Online (Sandbox Code Playgroud)
所以它可能不如其他想法.
小智 8
我认为最好用一个例子来解释:
假设你有一个枚举:
enum MyEnum
{
One,
Two,
Three
}
Run Code Online (Sandbox Code Playgroud)
您可以声明一个方法,如:
public static void MyEnumMethod(Enum e)
{
var enumValues = Enum.GetValues(e.GetType());
// you can iterate over enumValues with foreach
}
Run Code Online (Sandbox Code Playgroud)
你会这样称呼它:
MyEnumMethod(new MyEnum());
Run Code Online (Sandbox Code Playgroud)
使用此方法,您可以添加任何类型的枚举,如下所示:AddItems(myCombobox, typeof(Options))
public void AddItems (ComboBox cboBox, Type enumType)
{
cboBox.Items.AddRange(Enum.GetValues (enumType).Cast<object> ().ToArray ());
}
enum Options
{
Left, Right, Center
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46000 次 |
最近记录: |