C# 将var赋值为null以进行两个不同的查询

C# 将var赋值为null以进行两个不同的查询,c#,C#,有没有一种方法可以在不知道返回类型的情况下分配var查询。我想将var初始化为null,然后执行两种不同类型的查询中的任何一种,它们返回不同的自定义对象,而事先不知道是哪一种。所以我只需要初始化一个方法中的一个查询 我得到的错误是“无法分配给隐式类型的局部变量”。我试图查找前面的问题和答案,但不明白为什么var不能赋值为null。它不是应该稍后分配给接收到的对象吗?有没有办法使用更通用的上层对象类来处理这个问题,而不需要知道返回类型 var query = null; if (condition

有没有一种方法可以在不知道返回类型的情况下分配var查询。我想将var初始化为null,然后执行两种不同类型的查询中的任何一种,它们返回不同的自定义对象,而事先不知道是哪一种。所以我只需要初始化一个方法中的一个查询


我得到的错误是“无法分配给隐式类型的局部变量”。我试图查找前面的问题和答案,但不明白为什么var不能赋值为null。它不是应该稍后分配给接收到的对象吗?有没有办法使用更通用的上层对象类来处理这个问题,而不需要知道返回类型

var query = null;
if (condition) {
    query = /* something */
} 
else 
{
    query = /* something else */
}

var
不能赋值为null,因为
null
中没有类型信息来告诉编译器它是哪种类型的null
var
是编译时的东西——它需要在编译时具有已知的类型;只是编译器可以从您分配给它的内容中找出该类型。

“以后不是应该分配给接收到的对象吗?”-不,该类型是从赋值运算符的第二个操作数的类型推断出来的。<代码> null <代码>文字不具有类型,因此问题。如果不确定将分配什么类型,请考虑使用工厂模式初始化所需的类型。“可以处理此类型而不知道返回类型的Level Object类”总是可以进行对象查询;虽然我猜有一个更适合您的需求的非泛型对象。您可以使用
动态
,然后在运行时解析类型。但这听起来像是XY问题,肯定有更好的方法。如果<代码>查询< /代码>应持有不同的类型,请考虑使用两个变量或一个公共父类/接口。