我有以下代码:
// row is a DatGridViewRow object
IEnumerator<DataGridCell> cells = row.Cells.GetEnumerator();
我收到编译错误,指定我
无法将System.Collections.IEnumerator类型隐式转换为 System.Collections.Generic.IEnumerator
我需要做一个明确的演员表。当我尝试通过。
IEnumerator<DataGridCell> cells = (IEnumerator<DataGridCell>)row.Cells.GetEnumerator();
我遇到了运行时错误。
有什么想法吗?
答案 0 :(得分:6)
此case class Car(brandName: String)
object Car { implicit val mapping = CaseClassMapping.mapping[Car] }
case class User(name: String, car: Car)
object User { implicit val mapping = CaseClassMapping.mapping[User] }
val userForm = Form(implicitly[Mapping[User]])
会返回row.Cells.GetEnumerator()
,但您尝试将其分配给无法完成的IEnumerator
并获得例外。在它前面添加IEnumerator<DataGridViewCell>
将无济于事,因为它仍然是一个不同的类型。
要在之前使用(IEnumerator<DataGridCell>)
:
.Cast
IMO更好的选择是使用IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridViewCell>().GetEnumerator();
:
IEnumerable<DataGridCell>
答案 1 :(得分:2)
首先尝试使用强制转换操作符。
IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridCell>().GetEnumerator();
答案 2 :(得分:1)
IEnumerator<DataGridCell> cells = row.Cells.Cast<DataGridCell>().GetEnumerator();
对于那些跟在家里的人:
var able = (IEnumerable)new List<String>();
IEnumerator<String> tor = able.Cast<String>().GetEnumerator();
打败我为什么OP想要IEnumera tor 而不是IEnumera ble (事实上我怀疑他可能会更好地使用后者),但这就是他问的问题。