我遍历一个充当数据结构的对象。该结构只是一个包含KeyPairValue的列表,我想知道在使用foreach循环时是否可以获取Value。更改foreach返回值
回答
您可以实现这样的事情
public IEnumerable<V> EnumerateValues(IEnumerable<KeyValuePair<K, V>> list)
{
foreach (var kv in list) yield return kv.Value;
}
可以在实际类型K和V代替,或者看到一个小的改动意见,使一个通用的功能。
你应该修复它:'var kv in list',你还有另一个问题,它应该是'EnumerateValues
此外,为什么不使用'IEnumerable'而不是'List',所以它会更通用。 –
@OrelEraki:非常感谢'var'。我最初的意思是让他分析他的具体类型,这可能会更容易取决于他的经验水平。我会更新我的回复以表明这一点,并将他的评论指向通用。 –
为了进一步扩展Eric J的回答,如果您想彻底改变自定义集合的工作方式,可以做一些事情。我的数据结构已经拥有一个私人列表,所以我不需要将它作为一个值来传递。不管你什么时候迭代你的集合,它都会返回你想要的结果。
public IEnumerable<V> EnumerateValues()
{
foreach (var kv in privateList) yield return kv.Value;
}
public IEnumerator<KeyValuePair<K, V>> GetEnumerator()
{
return EnumerateValues().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
(我敢肯定,很多人都已经知道这一点,但这样我想我可能也只是万一别人拓展我无法找到任何有类似的问题。)
- 1. 更改返回值
- 2. 更改后返回旧值
- 3. EasyAutocomplete:更改返回值
- 4. MySQL更改返回值
- 5. 更改函数返回值
- 6. 从foreach返回唯一值
- 7. foreach不返回单个值
- 8. 使用CASE更改SELECT返回值
- 9. 复合语句返回后更改值?
- 10. 更改函数返回NaN的价值
- 11. 新项目更改函数返回值
- 12. 如何更改operator =的返回值?
- 13. C++返回指针值不可更改
- 14. 如何更改python的返回值?
- 15. 更改SWIG封装函数返回值
- 16. 如何更改p.getProperty(“os.arch”)的返回值;
- 17. 如何更改'mysql_config --socket'返回的值?
- 18. 更改返回值的格式=今日()
- 19. 改变返回值
- 20. foreach返回比count更多的元素()
- 21. 返回2点的值在vb.net的foreach
- 22. foreach中返回值的方法
- 23. 如何从foreach函数返回值
- 24. Foreach循环只返回一个值
- 25. 从的foreach在子程序返回值
- 26. Foreach循环返回PHP中的空值?
- 27. foreach for mybatis返回空值结果
- 28. 使用forEach返回数组值()
- 29. 斯卡拉返回值计算在foreach
- 30. Javascript,如何从foreach函数返回值
某些代码可能帮助解释你想要的。 – hatchet
'myKeyValuePair.Value' –
不,你不能告诉'foreach'这么做 - 但是你可以使用linq'Select'语句来处理列表,然后用'foreach'遍历它:'foreach(var值在mylist.Select(t => t.Value))' – Blorgbeard