gpt4 book ai didi

c# - 当此信息与对象参数一起传递时,为什么 Enum.GetName() 要求类型?

转载 作者:太空狗 更新时间:2023-10-30 00:18:56 26 4
gpt4 key购买 nike

考虑 .NET 函数签名:

Enum.GetName(Type type, object o);

当此信息通过 object o

传递时,似乎完全没有必要询问 Type

下面的代码说明了这一点:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
public enum Color
{
Black, White, Red, Orange, Yellow, Green, Blue, Purple, Pink,
DarkRed, DarkGreen, DarkBlue,
NeonGreen, NeonBlue
}
class Program
{
private static Random rand = new Random();

static void Main(string[] args)
{
Color color = getRandomColor();
PrintType(color);
Console.WriteLine("typeof = " + typeof(Color));
Console.ReadLine();
}

public static void PrintType(object o)
{
Type type = o.GetType();
Console.WriteLine("type = " + type);
}

private static Color getRandomColor()
{
var values = Enum.GetValues(typeof(Color));
Color randomColor = (Color)values.GetValue(rand.Next(values.Length));
return randomColor;
}
}
}

输出是

type = ConsoleApplication1.Color
typeof = ConsoleApplication1.Color

这意味着 Enum.GetName() 方法签名可能如下所示:

Enum.GetName(object o);

最佳答案

o 不需要是 Color 类型。示例:

Enum.GetName(typeof(Color), 3) // == Orange

关于c# - 当此信息与对象参数一起传递时,为什么 Enum.GetName() 要求类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com