博客
关于我
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/

你可能感兴趣的文章
Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
查看>>
Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
查看>>
python出现 unknown encoding: idna 的处理方法
查看>>
Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
查看>>
Python-numpy(2)数组的操作
查看>>
Python-Numpy的tile函数用法
查看>>
python-open函数
查看>>
Python-Pandas-将特定函数应用于给定级别-多索引数据框架
查看>>
python-queue队列通信
查看>>
python-ros No module named PyKDL
查看>>
python-social-auth 是否需要会话
查看>>
Python再获年度编程语言,微软或成最大赢家
查看>>
python-week5
查看>>
Python写表情包搜索工具(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Python-【1】配置
查看>>
Python-从子文件夹执行绝对导入
查看>>
Python-刷新页面,直到元素可单击
查看>>
PYTHON-唤醒+VOSK+DEEPSEEK+离线合成-实现纯离线大模型问答
查看>>
Python-在Dash回调中重用函数
查看>>