动态初始化var过滤器
本文关键字:过滤器 var 初始化 动态 | 更新日期: 2023-09-27 18:03:45
我想要实现的是根据我的方法得到的动态初始化"过滤器"变量。
- 初始化为null会抛出错误。
- 为空抛出错误。
- 将其设置为泛型类型会抛出错误
- 将其设置为新的
BsonDocument
也会抛出错误
这是我的代码:
var filter=null;
if (id != 0)
if (subID != 0)
//Get Specific Categories
filter = builder.Eq("Categories.Sub.id", id) & builder.Eq("Categories.Sub.Custom.id", subID);
else
//Get SubCategories
filter = builder.Eq("Categories.Sub.id", id);
else
//Get Generic Categories
filter = new BsonDocument();
我一直在搜索,但似乎没有人有我的问题,或者我找不到。
Var不是动态变量,它是用于类型推断的关键字。这是非常不同的概念。关键问题是,在你的代码片段中,编译器不能弄清楚你想要你的var
是什么样的变量。
var myNumber = 3; // myNumber is inferred by the compiler to be of type int.
int myNumber = 3; // this line is considered by the computer to be identical to the one above.
var变量的推断类型不会改变。
var myVariable = 3;
myVariable = "Hello"; // throws an error because myVariable is of type int
动态变量的类型可以改变。
dynamic myVariable = 3;
myVariable = "Hello"; // does not throw an error.
编译器必须能够在创建var变量时确定对象的类型;
var myVariable = null; // null can be anything, the compiler can not figure out what kind of variable you want.
var myVariable = (BsonDocument)null; // by setting the variable to a null instance of a specific type the compiler can figure out what to set var to.
对于var
,它是隐式类型,您可以将隐式类型变量初始化为null
,因为它可以是值类型和引用类型;并且值类型不能赋值给null(除非它被显式地设置为空)。
因此,你应该明确地指定类型
,而不是说var filter=null;
BsonDocument filter = null;