加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Resharper,“返回类型可以是IEnumerable ……”但为什么呢

发布时间:2020-12-15 18:08:29 所属栏目:百科 来源:网络整理
导读:参见英文答案 Resharper suggests parameter can be of type ‘BaseType’2个 我有这样的界面…… public interface IAccountRepository : IDisposable { IQueryableAccount FindByUserId(int userId); //here,Resharper says "Return type can be IEnumerab
参见英文答案 > Resharper suggests parameter can be of type ‘BaseType’2个
我有这样的界面……
public interface IAccountRepository : IDisposable {
    IQueryable<Account> FindByUserId(int userId); //here,Resharper says "Return type can be IEnumerable<Account>"
}

但是Resharper建议我把它改成IEnumerable< Account> FindByUserId(int userId)代替.

为什么会这样?它不会强制将整个对象加载到内存中吗?我认为将执行推迟到真正需要对象之前会更好吗?

解决方法

这只是一般规则的特定实例.

如果要返回一个类型SomeClass,它实现一个接口或继承自另一个类,并且在整个解决方案中,你只使用返回对象的基类/接口中的方法(所以你不要使用SomeClass中声明的任何方法) ),ReSharper将建议您将返回对象的类型替换为基类/接口的类型,以使您的代码更通用.

在这种情况下,您只使用IEnumerable< T>的方法. IQueryable< T>的界面源自于.

另请注意,这只是一个建议,而不是警告或错误.如果您愿意,可以放心地忽略它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读