Foreach, extension methods, and IEnumerable
只是出于好奇的快速提问。因此,根据有关foreach循环的msdn文档,它实现System.Collections.IEnumerable。文档中还有一个警告,即在使用foreach循环时不能修改集合(我假设foreach循环在这方面不是线程安全的?)
文档:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/foreach-in
此外,出于好奇,foreach循环在速度方面是否比for循环更优化?我知道foreach循环更容易键入/读取,但它的执行速度是否比for循环快?
查看msdn文档以获取列表,扩展方法average由Enumerable定义。当文档说它对每个元素执行转换函数时,它意味着什么?这是否意味着扩展方法的行为类似于foreach循环?文档:https://msdn.microsoft.com/en-us/library/bb549067(v=vs.110).aspx
假设我有两条线。假设我有一个由这两个线程共享的列表。第一个线程正在遍历此列表(foreach),第二个线程正在使用此列表上的平均扩展方法。那么这会导致抛出异常吗?我知道使用锁可以避免任何潜在的问题,但是为了讨论起见,假设我没有使用锁。
谢谢你的时间。
So according to the MSDN documentation regarding foreach loop, it implements System.Collections.IEnumerable
号
不,任何支持
Also, out of curiosity, is a foreach loop more optimized than a for loop in terms of speed?
号
这很复杂,因为这是关于
What does the documentation mean when it says it performs a transform function on each element.
号
这意味着EDOCX1的特定重载(16)将每个元素传递给传递给它的EDOCX1的调用(17)。这个变换的结果是平均的。
Does this mean the extension method behaves similarly to a foreach loop?
号
对。事实上,他们通常是江户十一〔三〕人。该特定方法是.NET框架版本中的
The first thread is traversing through this list (foreach) and the second thread is using the Average extension method on this list. So will this cause an exception to be thrown?
号
在这种特殊情况下,只要没有线程写入列表,这两个线程就不会导致彼此出现任何问题。用于实现
但是,这并不适用于支持