我有一些代码的行为就像我的变量在我认为不应该通过引用传递时一样。
在我的类库中
public class ListingHelper
{
public static List<FilterCategory> getListingFilterCertifications(ListingCategory parentListingCategory, ListingFilters filters)
{
...//Building up return object
filters.gradingServiceId = 2;
}
}
在页面的 pageLoad 中,我称之为:
private void BindForm()
{
ListingFilters filters = new ListingFilters();
filters.gradingServiceId = 0;
if (filters.gradingServiceId > 0)
{
listCertification.DataSource = ListingHelper.getListingFilterCertificationById(filters.gradingServiceId);
listCertification.DataBind();
}
}
当我从库中调用我的方法返回时,我认为filters.gradingServiceId
应该为 0,但它又返回为 2。静态方法的方法参数真的是通过引用传递的吗?
列表过滤器:
public class ListingFilters
{
public String state { get; set; }
public int categoryId { get; set; }
public int gradingServiceId { get; set; }
public int gradeId { get; set; }
}
编辑
感谢乔恩的链接。所以听起来在.net中所有用户创建的类都是引用类型,即使通过值传递,您实际上也不是发送对象的副本,而是指向其在内存中的位置的指针。
如果是这种情况,我将如何将我的过滤器对象的副本传递给一个方法,以便我可以弄乱这些值并使它们在调用它的代码中不受影响?