gpt4 book ai didi

c# - 如何将枚举中的所有元素列出到相同类型的 IEnumerable 数组中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:10 26 4
gpt4 key购买 nike

我正在做这样的事情。

IEnumerable<Poof> poofs = new[]{ Poof.One, Poof.Two };

我认为只获取enum 的所有元素会更酷,所以我这样做了。

foreach(Poof poof in Enum.GetValues(typeof (Poof)))
Console.WriteLine(poof);

就我所看到的打印到屏幕上的值而言,以上是可行的。但是,当我尝试存储结果时,我遇到了问题。为什么会这样,我该如何应对?

IEnumerable<Poof> poofs = Enum.GetValues(typeof (Poof));

最佳答案

IEnumerable<Poof> poofs = Enum.GetValues(typeof(Poof)).OfType<Poof>()

因为您知道所有元素都是Poof,所以您可以使用Cast,但是当您不知道集合中有哪些类型时,您可以使用OfType。它们之间的唯一区别是 Cast不检查 将项目转换为指定类型,但 OfType 检查每种类型,如果它可以转换为指定类型,则转换它并返回。它的实现方式如下:

static IEnumerable<TResult> OfTypeIterator<TResult>(IEnumerable source) 
{
foreach (object obj in source) {
if (obj is TResult) yield return (TResult)obj;
}

关于c# - 如何将枚举中的所有元素列出到相同类型的 IEnumerable 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961513/

26 4 0