繁体   English   中英

创建StackOverflow异常的扩展

[英]extension that creates StackOverflow exception

我写了一个类的函数扩展。 此扩展函数返回IList作为结果。 大多数时候,我想将IList转换为数组T []。 这需要我声明“ using System.Linq;”。 在将IList转换为T []的每个类中。 因此,为我节省了“ using 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);
}

但是别这样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM