【发布时间】:2016-08-07 01:56:57
【问题描述】:
代表:
return delegate( IQueryable<MySearchResultItem> query, Expression<Func<MySearchResultItem, object>> lambda, Wrapper wrapper)
{
wrapper.query = query.OrderBy(lambda);
query = query.OrderBy(lambda);
};
包装类:
public class Wrapper
{
public IQueryable<MySearchResultItem> query { get; set; }
}
当我执行此委托时,我希望在此函数结束后更改查询,但事实并非如此。所以我假设查询是按值传递的(而不是通过引用)
但是当我为这个查询创建一个包装类时,将查询添加到包装类并传递它。然后在这个方法完成后,包装类内部的查询已经改变(所以这个包装类是通过引用传递的?)
这是怎么回事?
【问题讨论】:
-
您将查询重新分配给 query.OrderBy(lambda)。这不会创建一个新的引用,因此输入查询参数不会改变吗?
标签: c# pass-by-reference pass-by-value