gpt4 book ai didi

c# - 创建 StackOverflow 异常的扩展

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:45 24 4
gpt4 key购买 nike

我为一个类写了一个函数扩展。此扩展函数返回 IList 作为结果。大多数时候我想将 IList 转换为数组 T[]。这需要我声明“使用 System.Linq;”在每个将 IList 转换为 T[] 的类中。因此,为了为我保存“使用 System.Linq;”的声明。我在原始扩展的同一类中编写了一个扩展(因此我不必声明“正在使用”):

    public static T[] ToArray<T>(this IList<T> list)
{
return list.ToArray();
}

当然扩展类有“using System.Linq;”,但这是我唯一需要放置此声明的地方。问题是我从命令“list.ToArray();”开始得到 StackOverflow 异常。实际上递归地调用自身而不是原始的 ToArray。我可以更改函数的名称 - MakeArray 而不是 ToArray,但我想保留我的命名约定。也许您有任何解决方案?

最佳答案

首先,我强烈建议您不要这样做。您已经“保存”了一行(一个 using 指令)并添加了四行不起作用。为什么单个 using 指令对您来说如此痛苦?它不影响其余代码,而且几乎完全无害...当然,还为您提供了 LINQ 的所有其他好处。

如果您真的必须这样做,您可以直接调用 LINQ 版本:

public static T[] ToArray<T>(this IList<T> list)
{
return System.Linq.Enumerable.ToArray(list);
}

但是就是不要

关于c# - 创建 StackOverflow 异常的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001209/

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