yield returns within lock statement
问题 if i have a yield return in a lock statement does the lock get taken out on each yield (5 times in the example below) or only once for all the items in the list? Thanks private List<string> _data = new List<string>(){"1","2","3","4","5"}; private object _locker =new object(); public IEnumerable<string> GetData() { lock (_locker) { foreach (string s in _data) { yield return s; } } } 回答1: Edit: This answer was wrong, but I can't delete it as it was marked as correct. Please see @Lockszmith's