gpt4 book ai didi

c# - 这段代码是什么意思? (IEnumerable query = from num in list)

转载 作者:行者123 更新时间:2023-11-30 20:05:10 25 4
gpt4 key购买 nike

这是什么意思:

IEnumerable<int> query = from num in list
where num < 3
select num;

这是一个对象吗 IEnumerable<T>

有人能描述一下吗?

最佳答案

你知道正常的方法语法,对吧?像 list.Add(10) 这样的东西. Microsoft 的一些聪明人注意到许多集合和列表有相似之处。人们可能喜欢做一些事情,比如选择某些值和对应该适用于所有 集合的值求和,而不是每个集合都为它提供一个方法。

因此他们引入了扩展方法,即只定义一次但可以应用于特定类型的所有对象(例如集合)的方法。例如 list.Where list.Sum .要使用扩展方法,您必须 add the namespace in which they are defined . Where扩展方法采用 lambda 表达式,该表达式在集合的每个元素上执行。

假设您有一些整数列表:

List<int> list = new List<int>();
list.Add(-1);
list.Add(0);
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);

然后,我以前必须编写以下代码才能仅获取那些小于三的整数:

List<int> query = new List<int>();
foreach(var nr in list)
{
if (nr < 3)
query.Add(nr);
}

现在,使用扩展方法,我可以这样写:

IEnumerable<int> query = list.Where(nr => nr < 3);

枚举时,query只会返回 list 中的整数少于三个。这些扩展方法是 LINQ 的一部分,Language Integrated Query .

但是,为了使 LINQ 更易于使用,他们设计了一种新语法。使用这种新语法,LINQ 更易于阅读和编写。

IEnumerable<int> query = from nr in list
where nr < 3
select nr;

编译器采用新语法并将其转换为前面提到的包含 Where 的代码。方法。你看,它只是语法糖,可以更轻松地处理集合。

IEnumerable<int> interface是任何可枚举对象的通用接口(interface)。最简单的枚举形式是做 foreach在对象上,它会一一返回它包含的所有整数。因此,LINQ 查询返回一些对象,但您不知道确切的类型。但是您知道它可以被枚举,这使得它非常有用。

关于c# - 这段代码是什么意思? (IEnumerable<int> query = from num in list),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com