Skip to content

Commit a66cd03

Browse files
committed
NDArray.FromMultiDimArray<T>: Added guards.
1 parent 047ae49 commit a66cd03

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/NumSharp.Core/Casting/NdArrayFromMultiDimArr.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,18 @@ public partial class NDArray
2626
/// Creates an NDArray out of given array of type <typeparamref name="T"/>
2727
/// </summary>
2828
/// <param name="ndarray"></param>
29+
/// <param name="copy">true for making </param>
2930
public static NDArray FromMultiDimArray<T>(Array ndarray, bool copy = true) where T : unmanaged
3031
{
31-
if (ndarray.GetType().GetElementType().IsArray)
32-
throw new Exception("Given array is a jagged array.");
32+
if (ndarray == null)
33+
throw new ArgumentNullException(nameof(ndarray));
34+
35+
var elem = ndarray.GetType().GetElementType();
36+
if (elem == null || elem.IsArray)
37+
throw new ArgumentException("Given array is not a multi-dimensional array (e.g. T[,,]).");
38+
39+
if (elem != typeof(T))
40+
throw new ArgumentException("T constraint must match the element type of the given array.");
3341

3442
switch (ndarray.Rank)
3543
{
@@ -67,7 +75,7 @@ public static NDArray FromMultiDimArray<T>(Array ndarray, bool copy = true) wher
6775
return np.array((T[,,,,,,,,,,,,,,,])ndarray, copy);
6876
}
6977

70-
throw new NotImplementedException("FromMultiDimArray<T>(Array dotNetArray)");
78+
throw new NotSupportedException();
7179
}
7280
}
7381
}

0 commit comments

Comments
 (0)