我有一个像这样的带锁的属性 getter :
Public ReadOnly Property ActiveClientList() as List(Of TcpClient)
Get
SyncLock(m_activeClientListLock)
Return m_activeClientList
End SyncLock
End Get
End Property
当我执行 ForEach 循环时,何时获取属性?我的意思是,在这个循环中,当列表被锁定时?在第一次检查?在每次迭代中?在整个循环中?
For Each client as TcpClient in Me.ActiveClientList
Next
提前致谢!
最佳答案
For Each
实际上是语法糖。编译器将其扩展为:
Dim enumerator As IEnumerator(Of TcpClient)
enumerator = Me.ActiveClientList.GetEnumerator()
While enumerator.GetNext()
Dim client As TcpClient
client = enumerator.Current
'Loop body inserted here.'
End While
如果这不是真的 VB.NET,我深表歉意(我是 C# 男孩)。
如您所见,对 ActiveClientList
的调用仅在循环开始时发生一次。
关于.net - 何时在 ForEach 循环中获取属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980297/