C# 如何使方法返回IEnumerable<;T>;从阵列?

C# 如何使方法返回IEnumerable<;T>;从阵列?,c#,C#,我有一个如下的方法。我需要将值存储在数组中,并将其作为IEnumerable返回,而不是yield return。我怎样才能做到这一点?。谢谢你的帮助 public static IEnumerable<UserData> DetailsFactory { get { yield return new UserData( "Jim",

我有一个如下的方法。我需要将值存储在数组中,并将其作为IEnumerable返回,而不是
yield return
。我怎样才能做到这一点?。谢谢你的帮助

public static IEnumerable<UserData> DetailsFactory
        {
            get
            {
                yield return new UserData(
                    "Jim",
                    "Parker",
                    "Sheryl")
                    .SetName("User-1 Address details") as UserData;
            }
        }
公共静态IEnumerable Details工厂
{
收到
{
返回新的用户数据(
“吉姆”,
“帕克”,
“谢丽尔”)
.SetName(“用户1地址详细信息”)作为用户数据;
}
}

A
T[]
已经是一个
IEnumerable
。因此,您可以直接返回数组:

return new[] {
  new UserData(
                "Jim",
                "Parker",
                "Sheryl")
                .SetName("User-1 Address details")
}

T[]
已经是一个
IEnumerable
。因此,您可以直接返回数组:

return new[] {
  new UserData(
                "Jim",
                "Parker",
                "Sheryl")
                .SetName("User-1 Address details")
}

只需返回阵列为什么使用
yield
?没有什么可以列举的。只需
返回新[]{…}
。仅供参考,此代码无效,无法编译。只有在属性中才能有任何
get{}
方法。@Fabjan这是一个属性。@ReneéVogt是的,但是属性中的
yield return
非常奇怪…只需返回数组为什么使用
yield
?没有什么可以列举的。只需
返回新[]{…}
。仅供参考,此代码无效,无法编译。只有在属性中才能有任何
get{}
方法。@Fabjan这是一个属性。@RenéVogt是的,但是属性中的
yield return
非常奇怪……旁注:是的,有人可以将结果转换到
UserData[]
并修改它,但在我看来,试图阻止人们做那些不一定能奏效的蠢事是徒劳的。即使将数组包装到另一个
IEnumerable
中,也可以使用反射来获取原始数组。对于不关心类型系统所带来的限制的对手,没有任何方法可以愚弄API。如果希望避免这种情况,可以将数组包装在
ReadOnlyCollection
中(但是这不能回答问题,您的回答非常好;-)。我认为您无法从
ReadOnlyCollection
获取原始数组(不过,我可能错了)。。。然后,您可以始终从任何可枚举项重构数组(在新数组上):-)@Jcl:If
ReadOnlyCollection
复制在原始数组中无法获取的项,但仅复制它们。然后你可以通过反射来获得它。我认为类型系统的正常保护是好的。试图防御敌对的开发人员IMHO没有多大用处。我没有见过
ReadOnlyCollection
的实现,但最肯定的是,是的。关于评论的其余部分:100%同意:-)旁注:是的,有人可以将结果投射到
UserData[]
并对其进行修改,但在我看来,试图阻止人们做愚蠢的事情是徒劳的。即使将数组包装到另一个
IEnumerable
中,也可以使用反射来获取原始数组。对于不关心类型系统所带来的限制的对手,没有任何方法可以愚弄API。如果希望避免这种情况,可以将数组包装在
ReadOnlyCollection
中(但是这不能回答问题,您的回答非常好;-)。我认为您无法从
ReadOnlyCollection
获取原始数组(不过,我可能错了)。。。然后,您可以始终从任何可枚举项重构数组(在新数组上):-)@Jcl:If
ReadOnlyCollection
复制在原始数组中无法获取的项,但仅复制它们。然后你可以通过反射来获得它。我认为类型系统的正常保护是好的。试图防御敌对的开发人员IMHO没有多大用处。我没有见过
ReadOnlyCollection
的实现,但最肯定的是,是的。关于其余的评论:100%同意:-)