C#里怎么得到List里其中一个元素的引用

自己封装了一个socket类,定义了一个List<MySocket> sockList,然后在程序里new新的对象并放到list里边 sockList.Add(sock)。现在的问题是我需要启动新的线程,线程里需要从list里取出其中的一个元素,通过ref传递引用。通过foreach循环内会提示迭代器变量无法传递ref参数。请问要怎么样做呢?没多少分,只能来10分悬赏了。
to lucika_china:谢谢你的回答。你说的这个方式我也试了,比如我传进去 fun(ref sockList[pos]),会报属性或索引器不得作为out或ref参数传递。

to Rungroo:以前确实是做C/C++的,用C#工作日也就2周不到吧。我封装的类似是个socket复用的功能,封装类除了有socket成员外,还加的有个bool变量,表明该socket是否被占用。开始是false,这个对象在主线程生成并放到一个List里的保存,作为函数的一个参数起线程,线程结束需要设置原对象的这个bool变量。这样就只能传引用了。

快接近真相了,再次求知道。

第1个回答  2010-10-16
foreach循环中是不允许在递归中修改循环变量的。
可以换一种方式,for(int pos=0;pos<sockList.Count;pos++){sockList[pos]},
即使用索引访问。本回答被提问者和网友采纳
第2个回答  2010-10-25
你以前应该有C/C++开发的经验吧,在C#中,像Socket这样的类对象本身已经是引用类型了,不需要显式注明ref,直接foreach(Socket s in sockList)就可以了。
第3个回答  2010-10-16
你以前应该有C/C++开发的经验吧,在C#中,像Socket这样的类对象本身已经是引用类型了,不需要显式注明ref,直接foreach(Socket s in sockList)就可以了。
第4个回答  2015-05-18
foreach循环中是不允许在递归中修改循环变量的。
可以换一种方式,for(int pos=0;pos<sockList.Count;pos++){sockList[pos]},
即使用索引访问。
第5个回答  2019-09-24
一个个答非所问 比如一个结构体 我怎么样才能 实现类似SomeFuc(ref myStructs[i])这样的功能
相似回答