【发布时间】:2015-08-08 05:54:22
【问题描述】:
我正在尝试 VS 2015,众所周知,最酷的功能之一是能够在观察窗口中观察 lambda 表达式。
我创建了一个控制台应用程序来测试它,这里是它的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WatchLambdaExpressions
{
class Program
{
static void Main(string[] args)
{
var books = new List<Book>() {new Book()
{
Author="J.K.Rowling",
Rating="5",
Title="Harry Potter"
},
new Book()
{
Author="Baroness Orczy",
Rating = "4.8",
Title="Scarlet Pimpernell"
},
new Book()
{
Author = "J.R.R.Tolkein",
Rating="5",
Title="Lord of the Rings"
},
new Book()
{
Author="Alexander Dumas",
Rating="4.9",
Title="Count of Monte Cristo"
},
new Book()
{
Author="Robert Ludlum",
Title = "Bourne Identity",
Rating = "4.6"
}
};
var selectedBooks = books.Where(b => Convert.ToDouble(b.Rating) >= 4.8);
}
}
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public string Rating { get; set; }
}
}
我在调试模式下运行程序,并在 Main 方法的退出点设置了一个断点。
好的,现在我去观察窗口写:
books.Where(b => Convert.ToDouble(b.Rating) >= 4.8)
我希望上述内容能够评估和过滤并向我显示 rating >= 4.8 的书籍列表,但它显示了
错误:调试器无法评估此表达式
你知道为什么吗?
不过,我可以观察其他 lambda 表达式。
这很好用:
books.Where(b => b.Title.Contains("Harry"))
【问题讨论】:
-
String是否始终包含有效数字?Convert.ToDouble否则会抛出异常。 -
是的,先生,它总是包含一个有效的数字。我自己创建列表并完全控制数据。
标签: c# lambda visual-studio-2015 visual-studio-debugging