我的下一個對象:C#枚舉忽略的名字爲了
private enum Operation
{
Power = 0x5E, //^
Division = 0x2F, ///
Multiplication = 0x2A, // *
Subtraction = 0x2D, // -
Addition = 0x2B // +
}
當我想要把它轉換成一個char[]
在接下來的方式:
private static char[] GetOperators()
{
List<char> ExistingOperators = new List<char>();
foreach (Operation enumOperator in Enum.GetValues(typeof(Operation)))
{
ExistingOperators.Add((char)enumOperator);
Console.WriteLine(enumOperator);
}
return ExistingOperators.ToArray<char>();
}
它寫在控制檯上的值的枚舉,但在排序從小到大。 上面的例子輸出:
Multiplication
Addition
Subtraction
Divison
Power
我想達到什麼:(以使陣列中相同的順序作爲enum
聲明)
char[] { '^', '/', '*', '*', '-', '*' };
預先感謝。
使用某種具有的IComparer排序列表:http://msdn.microsoft.com/en-us/library/e7a8xew6.aspx –
順序是枚舉存儲的是它的值,你可以有什麼是按名稱排序它們(只是使用.OrderBy(x => Enum.GetName(typeof(Operation),x))。聲明的順序根本不保存。你可以這樣做(如果你真的需要它的話)就是應用一些自定義屬性,並將它用於排序(如DisplayOrderAttribute) –
更好的解決方案(用於未來擴展和實際問題米)是**不要使用枚舉**。使用私有構造函數和許多常量字段(加法,乘法...)創建基類操作。聲明順序被保留(**很弱** !!!),你會得到其他好處。 –