0
我有一個列表,我希望能夠枚舉,所以我可以做foreach和類似的事情。類型<sometype>不可枚舉
類(Symbol.WPAN.Bluetooth.RemoteDevices)具有陣列狀符號(即此[1])
反正有包裹此起來,並使其可枚舉?
(順便說一句,我知道我可以只使用一個正常的循環,而不是一個foreach循環,我想這個問題在本質上是有點學術)
我有一個列表,我希望能夠枚舉,所以我可以做foreach和類似的事情。類型<sometype>不可枚舉
類(Symbol.WPAN.Bluetooth.RemoteDevices)具有陣列狀符號(即此[1])
反正有包裹此起來,並使其可枚舉?
(順便說一句,我知道我可以只使用一個正常的循環,而不是一個foreach循環,我想這個問題在本質上是有點學術)
假設它也具有計數功能,你可以這樣做以下
public static IEnumerable<RemoteDevice> MakeEnumerable(this RemoteDevices devices) {
for (var i = 0; i < devices.Count; i++){
yield return devices[i];
}
}
一個更通用的解決方案將是以下
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);
感謝偉大的答案! – Vaccano 2009-09-23 19:06:31