c# - 在 if-else 语句范围之外定义 var 以备后用

标签 c# linq

我有一个 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/

相关文章:

c# - {System.Net.Sockets.SocketException(10054): An existing connection was forcibly closed by the remote host.} C#

C# - 没有模块句柄?

c# - TimeZoneInfo 在两位代码中的工作方式不同

c# - 在设计器中打开用户控件时 Visual Studio 中的错误

c# - 如何使用 LINQ 删除数组中的重复元素?删除重复的元素?

c# - 我应该如何获得 IEnumerable 的长度?

javascript - 使用 ajax 调用在 GridView 中显示评论

c# - lambda 外部子查询迭代变量评估的次数

c# - 如何使用 LINQ 对 XML 数据执行 OrderBy?

c# - LINQ 查询根据匹配的另一个表从一个表返回