/// <summary> /// Copies data of <paramref>me</paramref> into a new array. /// </summary> /// <param name="me">Collection to copy data from.</param> /// <returns>A new array containing the data from <paramref>me</paramref>.</returns> public static T[] ToArray <T>(this IArrayCopyable <T> me) { T[] result; if (me.NotNull()) { result = new T[me.Count]; if (!me.CopyTo(result)) { result = null; } } else { result = null; } return(result); }
/// <summary> /// Extracts an array from <paramref>me</paramref>. Changing the resulting array may break <paramref>me</paramref>. /// </summary> /// <param name="me">Collection to extract array from.</param> /// <returns>The content of <paramref>me</paramref> as an array. It may or may not be a copy.</returns> public static T[] AsArray <T>(this IArrayCopyable <T> me) { return((me as IAsArray <T>)?.AsArray() ?? me.ToArray()); }