类型<sometype>不可枚举

Vac*_*ano 0 c# c#-3.0

我有一个列表,我希望能够枚举,所以我可以做foreach和类似的事情.

类(Symbol.WPAN.Bluetooth.RemoteDevices)具有符号表示的数组(即this [1])

无论如何要包装它并使其可枚举?

(顺便说一句,我知道我可以使用普通for循环而不是foreach循环.我猜这个问题本质上是学术性的.)

Jar*_*Par 8

假设它还具有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)