我有一些代码行为像我的变量通过引用传递时,我不认为他们应该。通过引用静态方法传递的变量?
在类库我有
public class ListingHelper
{
public static List<FilterCategory> getListingFilterCertifications(ListingCategory parentListingCategory, ListingFilters filters)
{
...//Building up return object
filters.gradingServiceId = 2;
}
}
在页面我称之为的页面加载:
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中所有用户创建的类都是引用类型,即使按值传递,实际上也不是发送对象的副本,而是指向其在内存中的位置的指针。
如果这是我将如何通过我的过滤器的副本对象的方法的情况下,使我能与价值观混乱周围,让他们在不调用它的代码有什么影响?
你是逸岸覆盖gradingServiceId 2,静态方法内 –
请仔细阅读http://pobox.com/~skeet/csharp/parameters.html –
貌似'getListingFilterCertifications'和'getListingFilterCertificationById'之间有些混乱。 – ladenedge