告诉我,是否有可能以某种方式(也许通过反射......)将 Enum(向上转换)带入它的类型。换句话说,我有一个函数需要一些枚举,这是事先不知道的:
void myFunc(Enum myEnum)
{
myEnum++;
myEnum.CompereTo(cincreteEnumValue);
}
我需要在给定的函数内执行我需要执行两个操作
增量 (++)
与任何特定的枚举值进行比较。
我不太明白如何做到这一点,因为我可以将任何枚举传递给这个方法。首先想到的是从基本 Enum 类型向上转换为特定的枚举,但我不知道传递了哪个枚举。也许这可以通过反思来完成?
您至少可以在问题中写下您对 的增量的理解是什么
enum,因为我和大多数其他程序员一样是这样理解的:因为任何enum-value 都是一个数字,所以它的增量将与增量相同对于一个数字但是,从评论中,我了解到您期望不同的行为。
通常,该方法如下所示:
结论:
我认为这就是你需要的
对,这不适用于这样的枚举:
更准确地说,它会起作用,但不会以您期望的方式工作,因为有关
enum所有公共方法中元素的数据是按其等效数值的升序返回的如果由于某种原因您仍然需要它,那么您可以诉诸反射,但有 3 个粗体但是:
但是,出于教育目的:
(测试和结论是一样的,我就不重复了)
关于比较:
Enum为 定义了一个接口IComparable,因此您期望的方法CompareTo就在那里(您只是写错了,例如“what”,“somehow”等词)