将类型“System.Collections.IEnumerator”转换为“System.Collections.Ge
本文关键字:System Collections Ge 转换 IEnumerator 类型 | 更新日期: 2023-09-27 18:12:33
我有以下代码:
// row is a DatGridViewRow object
IEnumerator<DataGridCell> cells = row.Cells.GetEnumerator();
我收到指定我的编译错误
无法将类型System.Collection.IEnumerator隐式转换为System.Collections.Generic.IEnumerator
我需要做一个明确的演员阵容。当我尝试通过。
IEnumerator<DataGridCell> cells = (IEnumerator<DataGridCell>)row.Cells.GetEnumerator();
我得到一个运行时错误。
有什么想法吗?
此row.Cells.GetEnumerator()
返回一个IEnumerator
,但您正试图将其分配给一个无法执行的IEnumerator<DataGridViewCell>
,结果出现异常。在它前面添加(IEnumerator<DataGridCell>)
没有帮助,因为它仍然是一种不同的类型。
要实现这一点,请在之前使用.Cast
IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridViewCell>().GetEnumerator();
IMO更好的选择是使用IEnumerable<DataGridCell>
:
IEnumerable<DataGridCell> cells = row.Cells.Cast<DataGridViewCell>();
请先尝试使用强制转换运算符。
IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridCell>().GetEnumerator();
IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridCell>().GetEnumerator();
对于那些在家里跟随的人:
var able = (IEnumerable)new List<String>();
IEnumerator<String> tor = able.Cast<String>().GetEnumerator();
我不明白为什么OP想要IEnumerator而不是IEnumerable(事实上,我怀疑他用后者可能会更好(,但这是他问的问题。