过滤器需要通过引用传递才能附加到它
Filter needs to be passed by reference in order to append to it
我想了解为什么 Expression<Func<SomeObject, bool>>
过滤器需要通过引用传递。
这是一个对象,默认情况下应由 c# 中的 ref 传递。
Expression<Func<SomeObject,bool>> filter = PredicateBuilder.New<SomeObject>(true);
//Function that builds the filter
void buildFilter(ref Expression<Func<SomeObject, bool>> filter){
filter = filter.And(x => x.SomeProperty == sth);
...builds filter. }
这是什么以及为什么我们需要这样处理它?
这是因为您是在替换原始对象,而不是更改它。您正在通过从现有引用生成新引用来在新引用上创建过滤点。
filter = filter.And(x => x.SomeProperty == sth);
这不会更改对象筛选器指向的位置,而是指向一个新的对象筛选器。如果您不通过引用传递,过滤器将一直指向原始对象。
我想了解为什么 Expression<Func<SomeObject, bool>>
过滤器需要通过引用传递。
这是一个对象,默认情况下应由 c# 中的 ref 传递。
Expression<Func<SomeObject,bool>> filter = PredicateBuilder.New<SomeObject>(true);
//Function that builds the filter
void buildFilter(ref Expression<Func<SomeObject, bool>> filter){
filter = filter.And(x => x.SomeProperty == sth);
...builds filter. }
这是什么以及为什么我们需要这样处理它?
这是因为您是在替换原始对象,而不是更改它。您正在通过从现有引用生成新引用来在新引用上创建过滤点。
filter = filter.And(x => x.SomeProperty == sth);
这不会更改对象筛选器指向的位置,而是指向一个新的对象筛选器。如果您不通过引用传递,过滤器将一直指向原始对象。