c# - 单实例和 IEnumerable 的重载方法
问题描述
我为一个方法IEnumerable<T>
和一个实例创建了两个重载:
void DoSomething<T>(T arg)
where T:class
{ // do something }
void DoSomething<T>(IEnumerable<T> enumerable)
where T:class
{ // do something }
问题是数组和列表不被识别为IEnumerable<T>
,对于诸如
DoSomething(new MyObject[]{o1,o2,o3})
单个实例的重载是用T
being调用的MyObject[]
。
有没有人有一个很好的设计,总是让我IEnumerable<T>
对任何其他实现的容器IEnumerable<T>
(例如数组和列表)都超载?
解决方案
你可以试试这个。基本上在调用方法之前添加转换。 https://dotnetfiddle.net/Xwqp5n
推荐阅读
- python - pyttsx3 什么都不说
- asp.net-core - Blazor Web 组装、FIDO2 和身份服务器
- c++ - 如何找到最大利润的项目编号以及如何分配数组[100000]???? 帮我
- python - Keras 和 Pytorch 之间的不同矩阵乘法行为
- sql - 查找字段值是否更新的逻辑
- ruby-on-rails - 如何将 Google 云存储用于我的 rails 应用程序?
- express - 密钥通过但邮递员验证失败
- vb.net - 如何使用 VB 从 Windows 窗体应用程序在 Outlook 中创建文件夹
- javascript - 如何在 javascript 中为 tensorflow 加载本地图像
- javascript - 由于在 html 表中导入的数据来自 JSON 文件,如何在 javascript 中添加按钮