Получить ссылку на страницу aspx в другом классе или библиотеке классов - PullRequest
0 голосов
/ 08 января 2012

Например, у меня есть этот метод в классе Link.cs для простого сопоставления URL-адресов маршрутов 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, но я передаю объект как значение, поэтому в теории он копирует все и использует больше памяти, чем просто передает ссылку ... или я ошибаюсь ? Есть ли какие-то накладные расходы при этом? Спасибо.

1 Ответ

0 голосов
/ 09 января 2012

Объекты (также называемые параметрами ссылочного типа), передаваемые как параметры метода, всегда передаются как ссылки на исходный объект и не будут использовать дополнительную память.

Обратите внимание, что это другая концепция, чем передача объекта как ref, который, по сути, является указателем на область памяти объектов, которую можно изменить методом (например, создать новый класс и присвоить его параметру).

С другой стороны, примитивные данныепо умолчанию типы (целые числа) передаются по значению, поэтому они потребляют дополнительную память.

В этой документации MSDN содержится более подробное обсуждение и примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...