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

本文共 2263 字,大约阅读时间需要 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/

你可能感兴趣的文章
Net与Flex入门
查看>>
net包之IPConn
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
ng 指令的自定义、使用
查看>>
Nginx
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + Spring Boot 实现负载均衡
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx Location配置总结
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
Nginx 反向代理解决跨域问题
查看>>