【发布时间】:2015-06-15 08:22:43
【问题描述】:
我把代码搞砸了:
enum Days
{
day1,
day2,
day3
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Enum.Format(typeof(Days), Days.day2, "D"));
}
}
我觉得 Enum.Format() 的第一个参数是多余的:因为第二个参数已经指定了 Enum 的类型,所以编译器会有“day2”的类型是“Days”的信息。那么为什么编译不推断第一个参数是“typeof(Days)”,为什么我必须指定它?
换句话说,我的意思是,如果 Enum.Format 的 .net 函数只有 2 个参数,为什么不能呢?类型可以从 value 参数中得知。
【问题讨论】:
-
您可以为第二个参数传递一个完全不同的值,例如任何整数值,而不仅仅是枚举值。
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
-
Format不是通用函数,它接收一个object值。它确实不知道类型,除非你指定它。这样做的原因是枚举值或多或少是某个基础数值上的标签。您可以在使用枚举的任何地方传递基础值(例如 int) -
@PanagiotisKanavos 你的论点的两个部分是完全脱节的。装箱的枚举值保持其类型。真正需要该类型的唯一情况是您想使用底层类型(
int)。
标签: c# types enums format arguments