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

你可能感兴趣的文章
php-cgi(fpm-cgi) 进程 CPU 100% 与 file_get_content...
查看>>
php-兔子问题,斐波那契数列
查看>>
php-有序数组合并后仍有序
查看>>
Redis以及Redis的php扩展安装
查看>>
php-约瑟夫问题
查看>>
php.ini中常见的配置信息选项
查看>>
php.ini配置中有10处设置不当,会使网站存在安全问题
查看>>
php5ts.dll 下载_php5ts.dll下载
查看>>
PHP7 新特性
查看>>
PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
查看>>
php7.1.6 + redis
查看>>
php7中使用php_memcache扩展
查看>>
PHP7中十个需要避免的坑
查看>>
php7和PHP5对比的新特性和性能优化
查看>>
PHP7安装pdo_mysql扩展
查看>>
PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
查看>>
php7,从phpExcel升级到PhpSpreadsheet
查看>>
PHP8中match新语句的操作方法
查看>>
PHP:第一章——PHP中常量和预定义常量
查看>>
PHP:第一章——PHP中的位运算
查看>>