博客
关于我
LINQ之ElementAt,ElementAtOrDefault
阅读量:318 次
发布时间:2019-03-04

本文共 2218 字,大约阅读时间需要 7 分钟。

ElementAt()和ElementAtOrDefault()是C#集合中常用的方法,用于数组和集合的索引访问操作。ElementAt()方法可以用来快速获取指定索引位置的元素,这与直接使用数组索引器[]的效果相似。ElementAt()适用于所有实现IEnumerable

接口的对象,可以用来获取任意序列中的元素。

ElementAt()的使用

ElementAt()方法的定义如下:

public static TSource ElementAt
(this IEnumerable
source, int index);

该方法接收一个IEnumerable

类型的对象和一个整数索引参数,返回指定索引位置的元素。如果source不支持索引访问(即不实现 IList
接口),ElementAt()方法会抛出 NotSupportedException异常。

ElementAtOrDefault()的使用

ElementAtOrDefault()方法类似于ElementAt(),但其主要区别在于当指定索引超出有效范围或为负数时,它不会抛出异常,而是返回该类型的默认值(null或零值,具体取决于TSource类型)。其定义如下:

public static TSource ElementAtOrDefault
(this IEnumerable
source, int index);

示例代码

以下是ElementAt()和ElementAtOrDefault()的示例代码:

public static class Program{    private static readonly int SELECTED_INDEX = 4;        public static void Main(string[] args)    {        int[] numbers = new int[] {1, 2, 3, 5, 7, 11};        int result = numbers.ElementAt(SELECTED_INDEX);        Console.WriteLine("数据:{0}", numbers.Text());        Console.WriteLine("指定索引:{0}", SELECTED_INDEX);        Console.WriteLine("结果:{0}", result);        Console.ReadKey();    }    public static string Text(this IEnumerable
i_source) { string text = string.Empty; foreach (var value in i_source) { text += string.Format("[{0}], ", value); } return text; }}// ElementAtOrDefault()示例public static class Program{ private static readonly int SELECTED_INDEX = -1; public static void Main(string[] args) { int[] numbers = new int[] {1, 2, 3, 5, 7, 11}; int result = 0; try { result = numbers.ElementAtOrDefault(SELECTED_INDEX); } catch (System.Exception i_exception) { Console.WriteLine("异常:{0}", i_exception); Console.ReadKey(); return; } Console.WriteLine("数据:{0}", numbers.Text()); Console.WriteLine("指定索引:{0}", SELECTED_INDEX); Console.WriteLine("结果:{0}", result); Console.ReadKey(); }}

注意事项

  • ElementAt()和ElementAtOrDefault()都是扩展方法,需要在使用前对集合进行适当的扩展。
  • ElementAtOrDefault()的使用可以避免因索引越界而产生的异常,但需要注意返回值的含义,尤其在没有明确指定默认值的情况下,可能会引发误解。
  • 在使用这些方法时,建议结合其他数据校验机制,以确保程序的健壮性。

转载地址:http://bfnq.baihongyu.com/

你可能感兴趣的文章
Objective-C实现binary exponentiation二进制幂运算算法(附完整源码)
查看>>
Objective-C实现binary tree traversal二叉树遍历算法(附完整源码)
查看>>
Objective-C实现binomial coefficient二项式系数算法(附完整源码)
查看>>
Objective-C实现BitMap算法(附完整源码)
查看>>
Objective-C实现bitonic sort双调排序算法(附完整源码)
查看>>
Objective-C实现bogo sort排序算法(附完整源码)
查看>>
Objective-C实现Boyer-Moore字符串搜索算法(附完整源码)
查看>>
Objective-C实现BP误差逆传播算法(附完整源码)
查看>>
Objective-C实现breadth First Search广度优先搜索算法(附完整源码))
查看>>
Objective-C实现BreadthFirstSearch广度优先搜索算法(附完整源码)
查看>>
Objective-C实现bubble sort冒泡排序算法(附完整源码)
查看>>
Objective-C实现Burke 抖动算法(附完整源码)
查看>>
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现cocktail shaker sort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现cocktailShakerSort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现combine Without Repetitions不重复地结合算法(附完整源码)
查看>>