Nao*_*aor 1 c# asp.net visual-studio-2010 visual-studio
我为一个类写了一个函数扩展.此extenssion函数返回IList作为结果.大多数时候我想将IList转换为数组T [].这需要我声明"使用System.Linq;" 在每个将IList转换为T []的类中.所以为了保存"使用System.Linq;"的声明.我在原始版本的同一类中写了一个扩展名(所以我不必声明"使用"):
public static T[] ToArray<T>(this IList<T> list)
{
return list.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
当然,extenssion类有"使用System.Linq;",但这是我需要放置此声明的唯一地方.问题是我从命令"list.ToArray();"得到StackOverflow异常 实际上是对自己进行反复调用,而不是对原始的ToArray进行调用.我可以更改函数的名称 - MakeArray而不是ToArray,但我想保留我的命名约定.也许你有任何解决方案吗?
首先,我强烈建议你不要这样做.你已经"保存"了一行(一个使用指令)并添加了四行不起作用.为什么单个使用指令对您如此痛苦?它不受其他代码的影响,几乎完全是无害的......当然,除了为您提供LINQ的所有其他好处之外.
如果你真的必须这样做,你可以明确地调用LINQ版本:
public static T[] ToArray<T>(this IList<T> list)
{
return System.Linq.Enumerable.ToArray(list);
}
Run Code Online (Sandbox Code Playgroud)
但就是不要.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |