使用扩展方法或 LINQ访问数组元素的安全方法是什么IndexOutOfRangeException?TryParseTryRead
			
			7885 次
		
4 回答
            47        
        
		
使用System.Linq ElementAtOrDefault方法。它在不引发异常的情况下处理超出范围的访问。如果索引无效,它会返回一个默认值。
int[] array = { 4, 5, 6 };
int a = array.ElementAtOrDefault(0);    // output: 4
int b = array.ElementAtOrDefault(1);    // output: 5
int c = array.ElementAtOrDefault(-1);   // output: 0
int d = array.ElementAtOrDefault(1000); // output: 0
于 2018-06-18T19:49:34.847   回答
    
    
            11        
        
		
您可以使用以下扩展方法。
public static bool TryGetElement<T>(this T[] array, int index, out T element) {
  if ( index < array.Length ) {
    element = array[index];
    return true;
  }
  element = default(T);
  return false;
}
例子:
int[] array = GetSomeArray();
int value;
if ( array.TryGetElement(5, out value) ) { 
  ...
}
于 2009-03-28T19:22:56.967   回答
    
    
            3        
        
		
将此扩展为空检查和超出范围检查。
public static class ArraySafe
{
    public static bool TryGetElement<T>(this T[] array, int index, out T element)
    {
        if(array == null || index < 0 || index >= array.Length)
        {
            element = default(T);
            return false;
        }
        element = array[index];
        return true;
    }
}
用法:
public void Test()
    {
        int[] intAry = new Int32[10];
        int v;
        if (intAry.TryGetElement(6, out v))
        {
            //here got value
        }
    }
于 2020-08-06T01:49:28.037   回答
    
    
            0        
        
		
如果要安全地遍历数组中的元素,只需使用枚举器:
foreach (int item in theArray) {
   // use the item variable to access the element
}
于 2009-03-28T19:46:22.433   回答