我有一个列表,我希望能够枚举,所以我可以做foreach和类似的事情.
类(Symbol.WPAN.Bluetooth.RemoteDevices)具有符号表示的数组(即this [1])
无论如何要包装它并使其可枚举?
(顺便说一句,我知道我可以使用普通for循环而不是foreach循环.我猜这个问题本质上是学术性的.)
假设它还具有Count功能,您可以执行以下操作
public static IEnumerable<RemoteDevice> MakeEnumerable(this RemoteDevices devices) {
for ( var i = 0; i < devices.Count; i++ ){
yield return devices[i];
}
}
Run Code Online (Sandbox Code Playgroud)
更通用的解决方案如下
public static IEnumerable<TItem> MakeEnumerable<TSource,TItem>(
this TSource source,
Func<TSource,int,TItem> getItem,
Func<TSource,int> getCount) {
var count = getCount(source);
for ( var i = 0; i < count; i++) {
yield return getItem(source,i);
}
}
...
var devices = GetTheDevicesInstance();
var e = devices.MakeEnumerable((s,i) => s[i], (s) => s.Count);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |