向ObservableCollection<int>添加int时触发InvalidCastException错误求助
问题:向ObservableCollection添加数据时触发InvalidCastException错误
这段C#函数旨在往ObservableCollection<int>类型的EdiTransaction.PositionHighlights中添加或移除整数数据:
public void ApplyHighlight() { var currentPos = HighlightService.GetSelectedPosition(Delimiters.ToArray()); if (EdiTransaction.PositionHighlights.Contains(currentPos.Item1)) { EdiTransaction.PositionHighlights.Remove(currentPos.Item1); } else { EdiTransaction.PositionHighlights.Add(currentPos.Item1); } }
执行过程中触发了以下错误:
InvalidCastException: Unable to cast object of type
System.Collections.ObjectModel.ObservableCollection[System.Int32]to typeSystem.Int32[].
错误原因分析
- 错误并非来自你代码中
Add/Remove的逻辑,核心问题出在HighlightService.GetSelectedPosition方法的调用或内部实现:- 你传入的参数是
Delimiters.ToArray()(一个int[]数组),但该方法内部可能错误地将传入的对象当作ObservableCollection<int>进行强制类型转换,或者方法定义的参数类型实际是ObservableCollection<int>而非int[],导致类型不匹配抛出异常。
- 你传入的参数是
- 另一种可能是
currentPos.Item1的实际类型并非int,而是ObservableCollection<int>,当你尝试将它传入Contains/Add/Remove方法时,触发了隐式类型转换错误,但结合错误信息来看,前者的可能性更大。
内容的提问来源于stack exchange,提问作者HyperSquid
相关产品推荐
相关产品推荐

