我在主函数
的顶部有以下变量声明string brand;
double price;
var itemList6 = from i in myStore.items
where i.price <= price && i.brand == brand
orderby i.type
select i;
稍后在程序中,我向用户询问品牌和价格,将它们放入适当的变量中,然后运行查询。但是,编译器不会让我运行它,因为我在查询中使用未分配的变量。是通过初始化变量来解决这个问题的唯一方法吗?我通常尝试不初始化变量,如果我不需要初始值,因为我发现它令人困惑(试图了解以后/为什么我使用该默认值)。
答案 0 :(得分:3)
您可以编写一个函数并将这些变量作为参数传递,以避免初始化。
如果您最终初始化,请考虑使用??以避免空值。
答案 1 :(得分:1)
在构造LINQ查询之前,必须为变量赋值。
原因是编译器正在使用变量来构造查询。即使查询不会被执行,编译器也需要在使用前分配变量,编译器会将查询表达式构建为use。
我的建议只是在那里加上一些名义上的默认/临时值。
答案 2 :(得分:0)
另一种解决方法是在明确为这些变量赋值之后再创建查询对象。