,可以通过以下方式实现:
例如,假设foreach循环所在的方法为TestMethod,代码如下:
using System;
using System.Collections;
public class Program
{
public static void Main()
{
TestMethod();
}
public static void TestMethod()
{
ArrayList list = new ArrayList() { 1, 2, 3, 4, 5 };
foreach (var item in list)
{
// 获取对list集合的引用
Type type = typeof(Program);
FieldInfo[] fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var field in fields)
{
if (field.FieldType == typeof(IEnumerable))
{
IEnumerable collection = (IEnumerable)field.GetValue(this);
Console.WriteLine(collection);
}
}
}
}
}
例如,假设foreach循环所在的方法为TestMethod,代码如下:
using System;
using System.Collections;
public class Program
{
public static void Main()
{
TestMethod();
}
public static void TestMethod()
{
ArrayList list = new ArrayList() { 1, 2, 3, 4, 5 };
foreach (var item in list)
{
// 获取对list集合的引用
var iterator = list.GetEnumerator();
Type iteratorType = iterator.GetType();
var field = iteratorType.GetField("list", BindingFlags.NonPublic | BindingFlags.Instance);
var collection = (IEnumerable)field.GetValue(iterator);
Console.WriteLine(collection);
}
}
}
以上是在不知道名称的情况下获取对foreach绑定内集合的引用的方法。这些方法可以帮助开发人员在需要操作绑定的集合时获取到集合的引用,从而进行相应的操作。
领取专属 10元无门槛券
手把手带您无忧上云