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();
}