【发布时间】:2020-07-02 06:08:21
【问题描述】:
我喜欢将类数组转换为整数数组。我的Data 班级是这样的-
public class Data
{
public int low, high;
...................
...................
public static implicit operator int[](Data myClass)
{
int[] arr = {myClass.low, myClass.high};
return arr;
}
}
在这个class 中,我有一个implicit operator conversion 函数,以便可以将类转换为整数数组。
我正在创建Data 类列表对象并将列表转换为int 这样的二维数组-
public int[][] Merge(int[][] intervals) {
List<Data> list = new List<Data>();
............
............
return list.Cast<int[]>().ToArray();
}
然后我得到这个错误-
System.InvalidCastException: Specified cast is not valid.
at (wrapper castclass) System.Object.__castclass_with_cache(object,intptr,intptr)
Line 0: System.Linq.Enumerable+<CastIterator>d__34`1[TResult].MoveNext () in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Collections.Generic.LargeArrayBuilder`1[T].AddRange (System.Collections.Generic.IEnumerable`1[T] items) in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Collections.Generic.EnumerableHelpers.ToArray[T] (System.Collections.Generic.IEnumerable`1[T] source) in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) in <59093ef301a24e5a91cb0295fb832cca>
Line 58: Solution.Merge (System.Int32[][] intervals) in Solution.cs
Line 21: __DriverSolution__.__Helper__ (System.Int32[][] param_1) in __Driver__.cs
Line 37: __Driver__.Main (System.String[] args) in __Driver__.cs
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Specified cast is not valid.
at (wrapper castclass) System.Object.__castclass_with_cache(object,intptr,intptr)
Line 0: System.Linq.Enumerable+<CastIterator>d__34`1[TResult].MoveNext () in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Collections.Generic.LargeArrayBuilder`1[T].AddRange (System.Collections.Generic.IEnumerable`1[T] items) in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Collections.Generic.EnumerableHelpers.ToArray[T] (System.Collections.Generic.IEnumerable`1[T] source) in <59093ef301a24e5a91cb0295fb832cca>
Line 0: System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) in <59093ef301a24e5a91cb0295fb832cca>
Line 58: Solution.Merge (System.Int32[][] intervals) in Solution.cs
Line 21: __DriverSolution__.__Helper__ (System.Int32[][] param_1) in __Driver__.cs
Line 37: __Driver__.Main (System.String[] args) in __Driver__.cs
谁能帮我解决这个问题?
【问题讨论】:
-
我认为您提供的代码不会引发错误。堆栈跟踪似乎表明您在合并函数的某处调用
list.Sort(),这就是导致错误的原因。您可能需要实现IComparable中提到的this answer -
请检查我得到的更新错误
标签: c# asp.net arrays asp.net-core implicit-conversion