Dictionary<string, int> myList = new Dictionary<string, int>();
List<KeyValuePair<string, int>> result = new List<KeyValuePair<string, int>>(myList);
result.Sort((first, second) => second.Value.CompareTo(first.Value));
在构建
时,它会在第3行引发5个错误这是来自ASP.NET 2.0的屏幕截图 alt text http://img696.imageshack.us/img696/3668/lambdas.jpg
这是来自.NET 2.0中的控制台应用程序 alt text http://img138.imageshack.us/img138/4788/lambda2.jpg
所以你认为出了什么问题?
为约翰 alt text http://img705.imageshack.us/img705/3618/lambda3.jpg
ok ..所以这里是一个RAR文件,其中包含一个Console应用程序和一个为.NET 2.0编写的Web应用程序 Lambda.rar
答案 0 :(得分:3)
试着把它放在一个地方:
C#编程语言在很大程度上独立于.NET Framework。其中一个例子是Visual Studio 2008引入了C#编程语言的第3版,它支持lambda表达式。同一版本的Visual Studio 2008还引入了.NET Framework 3.5版。它还引入了针对Framework 2.0,2.0或3.5版本的功能,同时允许您使用该语言的2.0或3.0版本。
例如,这允许您在面向.NET Framework 2.0或3.0版本的程序中使用C#3.0功能。
不知何故,您的ASP.NET应用程序(或者它是一个网站)被设置为使用C#编程语言的2.0版本。您的控制台应用程序设置为使用3.0版。这就是为什么它适用于您的控制台应用程序而不是ASP.NET应用程序。
ASP.NET始终并且将始终支持与控制台应用程序相同的.NET Framework和C#编程语言功能。如果你看到两者之间的差异,那么你的设置就会有所不同,而不是平台上的差异。这是基于自1.0版本的beta版以来对ASP.NET的了解。
答案 1 :(得分:2)
您的第二个屏幕截图是文件顶部(使用指令),并且无论是意外还是设计,您都明确提到“.NET 2”。所以,显而易见的问题是:
您使用的是C#3吗?因为Lamdas不适用于C#2。 (注意:它是语言版本,而不是/ NET框架版本重要!)
多重修改:该死的,我的第一次编辑让我更加不正确: - )
答案 2 :(得分:0)
您是否确保将此代码放在方法中?或者你是否在课堂上有它。在类级别拥有它会在构建时抛出5个错误。
<强>为强>
class Program
{
var myList = new Dictionary<string, int>();
var result = new List<KeyValuePair<string, int>>(myList);
result.Sort((x, y) => x.Value.CompareTo(y.Value));
static void Main(string[] args)
{
}
}
给出以下错误:
错误1无效令牌'('在课堂上, struct或接口成员 声明
错误2无效令牌',' 在类,结构或接口成员中 声明
错误3令牌无效')' 在类,结构或接口成员中 声明
错误4无效令牌'(' 在类,结构或接口成员中 声明
错误5无效令牌')' 在类,结构或接口成员中 声明
不可强>
class Program
{
static void Main(string[] args)
{
var myList = new Dictionary<string, int>();
var result = new List<KeyValuePair<string, int>>(myList);
result.Sort((x, y) => x.Value.CompareTo(y.Value));
}
}
答案 3 :(得分:0)
using System;
using System.Collections.Generic;
namespace SO
{
class Program
{
public static void Main(string[] args)
{
var myList = new Dictionary<string, int>();
myList.Add("a",2);
myList.Add("b",50);
myList.Add("c",6);
var result = new List<KeyValuePair<string, int>>(myList);
result.Sort((first, second) => second.Value.CompareTo(first.Value));
result.Reverse();
foreach (KeyValuePair<string, int> pair in result)
{
Console.WriteLine(pair.Value);
}
Console.ReadLine();
}
}
}
以上似乎在3.5和2下编译......
也适用 - 只是跑了。