我觉得 Enum.Format() 的第一个参数有点多余
本文关键字:参数 第一个 多余 Enum Format | 更新日期: 2023-09-27 17:56:08
我有代码吹:
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
参数中使用enum
的基础类型,例如:
public enum MyEnum
{
Foo = 1
}
string str = Enum.Format(typeof(MyEnum), 1, "G"); // Foo
但请注意:
public enum MyEnum : long
{
Foo = 1
}
string str = Enum.Format(typeof(MyEnum), 1L, "G");
正如我所写的,你必须使用底层类型!所以在这种情况下,long
.
这在 Enum.Format 中非常间接地拼写出来:
ArgumentException:值的类型不是 enumType 的基础类型。
因此,隐式地,如果值属于enumType的基础类型,则没有异常,并且返回一些结果。