2011-02-10 4 views
4

У меня есть метод, как нижеВозвращающиеся значения

public List<aspnet_Roles> GetAllRoles() 
{ 
    var rolesList = _dbProfile.aspnet_Roles.ToList(); 
    return rolesList; 
} 

В этом методе сначала все ролей из базы данных (LINQ к SQL) был получен и присваивается переменной rolesList типа var.

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

ли ниже метод лучше, чем выше версия:

public List<aspnet_Roles> GetAllRoles() 
     { 
      return _dbProfile.aspnet_Roles.ToList(); 
     } 

ли вышеуказанные два способа компиляции в IL так же или второй вариант лучше? Вторая версия не содержит ненужного объявления переменной.

+1

Зачем вам все это? – BoltClock

+0

Я предполагаю, что создание переменной и присвоение значений - дополнительное распределение памяти. Вместо этого, если мы вернемся напрямую, возможно, я не уверен, это распределение памяти для хранения списка может быть уменьшено. Я не знаю, что это то, что я хочу знать. Я предполагаю, что эта строка _dbProfile.aspnet_Roles.ToList(); уже выделено в память для хранения возвращенного списка. И снова, если мы сохраним его в другой переменной, а затем вернем его, я думаю, что есть выделение двойной памяти. Я не уверен, пожалуйста, помогите мне. – nccsbim071

ответ

2

Я уверен (хотя я еще не проверил), что они скомпилируются с тем же ИЛ. Компилятор C# - умный.

Преимущество первой версии заключается в том, что она облегчает точку останова и проверяет значение перед возвратом.

Вторая версия является более кратким, конечно.

Это зависит от вас, что вы предпочитаете, здесь нет объективного «лучшего».

+0

Можно ли подтвердить, что они будут скомпилированы. Если бы вы могли вести меня, я попробую. Спасибо за ваш комментарий BTW. – nccsbim071

+0

Ну, вы можете попробовать их компилировать и посмотреть на них с помощью [Reflector] (http://www.red-gate.com/products/dotnet-development/reflector/) – Blorgbeard

+0

Есть ли какой-либо свободный отражатель, который я могу использовать или инструмент в visual studio, который я могу использовать для просмотра кода, сгенерированного IL. – nccsbim071

6

Первый способ поможет вам в отладке. Прямо сейчас, AFAIK, нет способа посмотреть возвращаемое значение метода во время отладки.

Кроме этого, нет никакой разницы.

Смежные вопросы