//Microsoft Public License (Ms-PL)
//http://visualizer.codeplex.com/license
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Redwerb.BizArk.Core.ArrayExt
{
/// <summary>
/// Provides extension methods for string arrays.
/// </summary>
public static class ArrayExt
{
#region Shrink
/// <summary>
/// Creates a new array with just the specified elements.
/// </summary>
/// <param name="arr"></param>
/// <param name="startIndex"></param>
/// <param name="endIndex"></param>
/// <returns></returns>
public static Array Shrink(this Array arr, int startIndex, int endIndex)
{
if (arr == null) return null;
if (startIndex >= arr.Length) return Array.CreateInstance(arr.GetType().GetElementType(), 0);
if (endIndex < startIndex) return Array.CreateInstance(arr.GetType().GetElementType(), 0);
if (startIndex < 0) startIndex = 0;
int length = (endIndex - startIndex) + 1;
Array retArr = Array.CreateInstance(arr.GetType().GetElementType(), length);
for (int i = startIndex; i <= endIndex; i++)
retArr.SetValue(arr.GetValue(i), i - startIndex);
return retArr;
}
/// <summary>
/// Creates a new array with just the specified elements.
/// </summary>
/// <param name="arr"></param>
/// <param name="startIndex"></param>
/// <returns></returns>
public static string[] Shrink(this string[] arr, int startIndex)
{
return Shrink((Array)arr, startIndex, arr.Length - 1) as string[];
}
/// <summary>
/// Creates a new array with just the specified elements.
/// </summary>
/// <param name="arr"></param>
/// <param name="startIndex"></param>
/// <param name="endIndex"></param>
/// <returns></returns>
public static string[] Shrink(this string[] arr, int startIndex, int endIndex)
{
return Shrink((Array)arr, startIndex, endIndex) as string[];
}
/// <summary>
/// Creates a new array with just the specified elements.
/// </summary>
/// <param name="arr"></param>
/// <param name="startIndex"></param>
/// <returns></returns>
public static int[] Shrink(this int[] arr, int startIndex)
{
return Shrink((Array)arr, startIndex, arr.Length - 1) as int[];
}
/// <summary>
/// Creates a new array with just the specified elements.
/// </summary>
/// <param name="arr"></param>
/// <param name="startIndex"></param>
/// <param name="endIndex"></param>
/// <returns></returns>
public static int[] Shrink(this int[] arr, int startIndex, int endIndex)
{
return Shrink((Array)arr, startIndex, endIndex) as int[];
}
#endregion
}
}
|