通过foreach中的引用来抓取Collection中的元素

时间:2018-08-24 14:03:42

标签: c# .net

这是此问题的后续措施: How to replace an element in a Collection

我找到了针对集合中某些问题的替代方法。但是,这并不能让我清楚C#是否具有表达与C ++ foreach循环相同的功能:

for(auto &element : collection) {
    // Yay, element is an actual reference to the object physically in the collection!
}

因此,我想将问题修改为一个一般情况:假设我有一个外部方法,每个引用都使用T类型的对象:

void Foo<T>(ref T obj);

此方法的确切作用与之无关。

因此,我想通过实际集合的引用获取每个元素,并将其放入此方法中。

void ApplyFoo<T>(ICollection<T> collection)
{
    // Iterate over every element and pass it to Foo as a reference.
}

在C#中有一种简单的方法吗?也许我不知道一些语法糖?

如果没有任何理由?似乎实际上是在限制语言的表达能力。

1 个答案:

答案 0 :(得分:-2)

目前,尚无法通过语言或框架API来做到这一点。正如我在其他答案中提到的那样,您将必须具有一个包装器引用类型,该包装器引用类型可以保存该值并允许您对其进行更改。