2011-02-10 6 views
4

내가 검색 입력 var의 변수 rolesList에 할당 된 (LINQ SQL로) 데이터베이스에서 처음으로 모든 역할이 방법 반환 값은

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

아래 과 같은 방법이있다.

값을 직접 반환하고 다른 변수에 할당 한 다음 반환하는 것이 좋을지 알고 싶습니다.

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

위의 두 가지 방법이 동일하거나 제 버전이 더 같이 IL에서 컴파일 :

은 아래 방법은 상기 버전보다 낫다는? 두 번째 버전에는 불필요한 변수 선언이 없습니다.

+1

왜 신경 씁니까? – BoltClock

+0

변수를 만들고 값을 할당하는 것은 추가 메모리 할당입니다. 대신 우리가 직접 돌아올 지 모르겠다. 저장소 목록 에 대한이 메모리 할당을 줄일 수 있습니다. 나는 이것이 내가 알고 싶은 것을 모른다. 나는이 줄을 추측한다 _dbProfile.aspnet_Roles.ToList(); 반환 된 목록을 저장하기 위해 이미 메모리에 할당되었습니다. 그리고 다시 다른 변수에 저장하고 반환하면 두 배의 메모리가 할당 된 것 같습니다. 나는 확실하지 않다, plese는 나를 안내한다. – nccsbim071

답변

2

나는 이것들이 같은 일리노이로 컴파일 될 것이라고 확신한다. C# 컴파일러는 똑똑합니다.

첫 번째 버전의 장점은 되돌아 가기 전에 중단 점을 확인하고 값을 확인하는 것이 더 쉽다는 것입니다.

두 번째 버전은 더 간결합니다.

당신이 선호하는 것은 당신에게 달려 있습니다. 객관적으로 '더 나은'것은 없습니다.

+0

이것들이 동일하게 컴파일되는지를 확인할 수 있습니까? 네가 나를 인도 할 수 있다면, 나는 그것을 시도 할 것이다. 귀하의 의견을 주셔서 감사합니다 BTW. – nccsbim071

+0

음, 둘 다 컴파일하고 [Reflector] (http://www.red-gate.com/products/dotnet-development/reflector/)를 사용하여 볼 수 있습니다. – Blorgbeard

+0

무료 리플렉터가 있습니까? IL 생성 코드를 볼 수있는 Visual Studio 도구. – nccsbim071

6

첫 번째 방법은 디버깅에 도움이됩니다. 지금 AFAIK, 디버깅하는 동안 메서드의 반환 값을 볼 수있는 방법이 없습니다.

그 외의 경우에는 차이가 없습니다.

관련 문제