例如,我在Link.cs
类中使用此方法来轻松映射Global.asax
路由:
public static string ToCategory(string categoryName, ushort pageNumber, Page page)
{
if (pageNumber == 1)
return page.GetRouteUrl("category", new { CategoryName = categoryName });
else
return page.GetRouteUrl("category-page", new { CategoryName = categoryName, Page = pageNumber });
}
GetRouteUrl()
方法是Page
类的一部分,但我将对象作为值传递,因此理论上它复制整个事物并使用更多内存而不仅仅传递引用...或者我错了?这样做是否有任何性能开销?感谢。
答案 0 :(得分:0)
作为方法参数传递的对象(也称为引用类型参数)总是作为对原始对象的引用传递,不会使用额外的内存。
请注意,这与将对象作为ref
传递的概念不同,{{1}}本质上是指向对象内存位置的指针,可以通过该方法进行修改(例如,创建新类并分配它)参数)。
另一方面,默认情况下,原始数据类型(例如int)按值传递,因此会占用额外的内存。
This MSDN documentation包含更详细的讨论和示例。