我有一个 if-else 语句,它使用 Linq 从数据库中获取搜索结果,每个结果都不同,但返回的类型相同。
我的问题是我无法初始化 var
if-else 语句之外的变量。我需要它,因为在语句之后我继续查询结果。
结果的类型是 iQueryable<mission>
;
如何让函数作用域中的var能够接受结果?
我尝试用 Enumerable.Empty<mission>().AsQueryable()
初始化它它没有用,尝试使用 dynamic
变量和设置还设置了 var missions = null
, 它也没有用。
最佳答案
所以...不要使用var
?
IQueryable<Mission> variable;
if (...)
{
...
此外,作为 var variable = null
(无法编译)的替代方案,您可以使用 default
:
var variable = default(IQueryable<Mission>);
不过,与上面的代码不同的是,这将隐藏因“忘记”分配给变量而产生的错误 - 您正在分配一个“类型化”null
,因此该变量已分配一个值。在第一个示例中,variable
未赋值,因此如果您的代码中有任何分支试图读取 variable
的值 如果不先写入它,编译器将报告错误。另请注意,default
仅对引用类型返回 null
。值类型基本上会返回该特定类型的任何零值 - 例如,default(int)
只是零,而 default(DateTime)
是 01/01/0001 00:00:00
(DateTime.MinValue
)。
关于c# - 在 if-else 语句范围之外定义 var 以备后用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162622/