Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回值_C# - Fatal编程技术网

C# 返回值

C# 返回值,c#,C#,我有一个如下的方法 public List<aspnet_Roles> GetAllRoles() { var rolesList = _dbProfile.aspnet_Roles.ToList(); return rolesList; } 以上两种方法是用IL编译,还是第二个版本更好?第二个版本没有不必要的变量声明。我确信(尽管我没有检查)这些变量将编译为相同的IL。C#编译器很聪明 第一个版本的优点是,它更容易在返回之前设置断点并检查值 当然,第二个版本更简洁 这取决

我有一个如下的方法

public List<aspnet_Roles> GetAllRoles()
{
  var rolesList = _dbProfile.aspnet_Roles.ToList();
  return rolesList;
}
以上两种方法是用IL编译,还是第二个版本更好?第二个版本没有不必要的变量声明。

我确信(尽管我没有检查)这些变量将编译为相同的IL。C#编译器很聪明

第一个版本的优点是,它更容易在返回之前设置断点并检查值

当然,第二个版本更简洁


这取决于您喜欢哪个,这里没有“更好”的目标。

第一种方法将帮助您进行调试。现在,很抱歉,在调试时无法查看方法的返回值


除此之外,没有区别。

我想,创建变量并赋值是额外的内存分配。相反,若我们直接返回,我不确定,分配给存储列表的内存可能会减少。我不知道这是我想知道的。我猜这行是_dbProfile.aspnet_Roles.ToList();已分配给内存以存储返回的列表。同样,如果我们将它存储到另一个变量中,然后返回它,我猜会有双重内存分配。我不确定,请指导我。是否可以确认这些将编译为相同的。如果你能指引我,我会试试看。谢谢你的评论,顺便说一句,你可以试着编译它们,看看它们是否有任何免费的反射器,我可以使用或在visual studio中的工具,我可以用来查看IL生成的代码。
public List<aspnet_Roles> GetAllRoles()
        {
            return _dbProfile.aspnet_Roles.ToList();
        }