list.FindIndex的备选方案(x=>;x.UpperLimit>;=lInput&;x.LowerLimit<;=lInput);在.NET2.0框架中

list.FindIndex的备选方案(x=>;x.UpperLimit>;=lInput&;x.LowerLimit<;=lInput);在.NET2.0框架中,.net,list,.net,List,我意识到.NET2.0不支持lamba; 想知道.net 2.0中下列语句的替代方法 list.FindIndex(x=>x.UpperLimit>=dblInput&&x.LowerLimit 我意识到.NET2.0不支持lamba 事实并非如此。您可以在.NET 2.0中使用lambda表达式毫无问题地创建委托。您需要一个C#3编译器(或更高版本),仅此而已-这是一种编译时转换,不需要框架或CLR支持。如果没有单独的库,您将无法获得表达式树支持,但这是另一回事,对于List.FindInde

我意识到.NET2.0不支持lamba; 想知道.net 2.0中下列语句的替代方法

list.FindIndex(x=>x.UpperLimit>=dblInput&&x.LowerLimit 我意识到.NET2.0不支持lamba

事实并非如此。您可以在.NET 2.0中使用lambda表达式毫无问题地创建委托。您需要一个C#3编译器(或更高版本),仅此而已-这是一种编译时转换,不需要框架或CLR支持。如果没有单独的库,您将无法获得表达式树支持,但这是另一回事,对于
List.FindIndex
,您不需要它

只要您使用C#3+编译器进行构建,您给出的代码就应该很好

如果您使用的是C#2编译器,则可以使用匿名方法:

// Change the type of x appropriately. You haven't told us the type of list.
int index = list.FindIndex(delegate(Foo x) { 
    return x.UpperLimit >= dblInput && x.LowerLimit <= dblInput;
});
//适当更改x的类型。您还没有告诉我们列表的类型。
int index=list.FindIndex(委托(Foo x){

return x.UpperLimit>=dblInput&&x.LowerLimit Labmda在c#3.0编译器和更高版本甚至在.net 2.0中都受支持。换句话说,如果您使用的是VS2008或更高版本,您可以使用lambda。@TimSchmelter:我看不到任何迹象表明在这里使用相等。我强烈怀疑
x
列表的元素类型
是不同的…使用vs2005,有什么区别altrnative@user3458716:你应该在你的问题中说明这一点。为什么你不能使用更现代的编译器?@user3458716 Jon有一个答案给你。编译器的版本较低。最新版本是什么alternative@user3458716:使用6年以下的编译器。哪个版本的编译器是y你正在使用?不能真正使用更新的版本,是否应该替换x?它会抛出一个错误error@user3458716:抱歉,我不知道哪个是参数。我必须给它一个
Foo
类型,因为您没有在问题中给我们提供太多信息(提示)。您还没有说明为什么不能使用较新的编译器。您错过了非常重要的生产力增强,即使是针对.NET 2.list包含的结构