2011-02-10 76 views
4

我有像下面返回值

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

的方法在该方法中,首先从数据库中的角色(LINQ到SQL)已被检索并分配给var类型的变量rolesList

我想知道直接返回值是否更好,而不是先将其分配给其他变量,然后将其返回。

是对以下方法比上述更好的版本:

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

将上述两种方法中IL编译为相同或第二版本是更好?第二个版本没有不必要的变量声明。

+1

你为什么在意? – BoltClock 2011-02-10 12:22:38

+0

我想,创建一个变量并赋值是额外的内存分配。相反,如果我们直接返回可能会,我不知道,这个内存分配到存储列表可以减少。我不知道这是我想知道的。我猜这一行_dbProfile.aspnet_Roles.ToList();已经分配给内存来存储返回的列表。再次,如果我们将它存储到另一个变量然后返回它,我想有双重内存分配。我不确定,请引导我。 – nccsbim071 2011-02-10 12:26:38

回答

2

我有信心(虽然我没有检查过),这些将编译成相同的IL。 C#编译器很聪明。

第一个版本的优点是它可以在返回之前更容易断点并检查值。

第二个版本当然更简洁。

这取决于你自己喜欢什么,这里没有客观的“更好”。

6

第一种方法将帮助您进行调试。现在,AFAIK,在调试时无法观察方法的返回值。

除此之外,没有区别。