asp.net 在这种情况下和一般情况下,什么是更好的回报?IELTS< T>或List< T>(甚至是其他东西?))[已关闭]

blpfk2vs  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(127)

已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

26天前关闭
Improve this question

public async Task<ActionResult<IEnumerable<string>>> GetAllMemoriesNamesForCurrentUser() 
    {
        var currentUserId = User.GetUserId();

        var currentUser = await _repositoryManager.User.GetUserByIdAsync(currentUserId,trackChanges: false);

        if(currentUser is null)
        {
            return NotFound("User is not found");
        }

        IEnumerable<string> memoriesNames = currentUser.Memories.Select(m => m.Title);

        return Ok(memoriesNames);
    }

我知道,他们两个都工作正常。但是,仍然很有趣的是,它们中的哪一个被认为是更好的实践,哪一个工作得更快。感谢回应:>

sgtfey8w

sgtfey8w1#

框架设计指南建议在需要返回可由调用方修改的集合时使用类Collection,或者对于只读集合使用ReadOnlyCollection
这比简单的IList更好的原因是IList不会通知调用者它是否是只读的。
如果您返回IEnumerable<T>,则调用者执行某些操作时可能会有点棘手。此外,您将不再给予调用方修改集合的灵活性,这可能是您想要的,也可能不是。
请记住,LINQ包含一些技巧,并将根据执行的类型优化某些调用。因此,例如,如果您执行Count,并且底层集合是List,则它不会遍历所有元素。
就个人而言,对于ORM,我可能会坚持使用Collection<T>作为返回值。

相关问题