首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回BindingList<T>

返回BindingList<T>
EN

Code Review用户
提问于 2017-05-04 20:37:24
回答 1查看 163关注 0票数 6

我在一个不了解数据绑定的地方工作。我已经用了大约一年的时间了,我想弄清楚到底是怎么回事。

特别是,我想知道以下两种类型的呼叫之间是否有什么区别。

考虑到这个简单的数据示例:

代码语言:javascript
复制
public class TableType {
    public int ID;
}

public System.Data.Linq.Table<TableType> TableTypes
{
    get
    {
        return this.GetTable<TableType>();
    }
}

版本1:

代码语言:javascript
复制
private BindingList<TableType> _tableTypeList;

public BindingList<TableType> TableTypesList1
{
    get
    {
        if (_tableTypeList == null)
        {
            var temp = TableTypes.OrderBy(t => t.ID);
            _tableTypeList = ((IListSource)temp).GetList() as BindingList<TableType>;
        }
        return _tableTypeList;
    }
}

这里的高级开发人员使用版本1编写了大量数据库代码。

从这个角度来看,您可能会认为它会防止冗余的数据库调用,但情况似乎并非如此。代码上的断点再也不会被击中。

版本2:

代码语言:javascript
复制
public BindingList<TableType> TableTypesList2
{
    get
    {
        var query = from t in TableTypes orderby t.ID select t;
        var result = new BindingList<TableType>(query.ToList());
        return result;
    }
}

高级开发人员大约6个月前离开了,所以现在我正在编写数据库调用。

我一直在使用版本2,在我看来,它看起来要干净得多,而且看起来也是如此。

一个版本比另一个版本好吗?有一个版本没有其他版本吗?我怎么才能对发生的事情有更好的感觉呢?

特别是,我惊讶地发现,对TableTypesList1的另一个调用并没有调用getter。

EN

回答 1

Code Review用户

回答已采纳

发布于 2017-05-05 06:19:07

一个版本比另一个版本好吗?

这取决于你到底想要什么。

  • V1是一个单一的时间操作。表将只填充一次,随后的调用将使用缓存的数据。
  • 另一方面,V2将在每次访问中执行。

一个人不能说该选哪一个。你必须知道什么对你更好。

有一个版本没有其他版本吗?

是。V1每次只获取一次数据,每次只获取一次V2。这意味着让第一个属性成为属性可能是可以接受的,因为随后的调用将是快速的,并且只有第一次初始化可能需要一些时间(取决于它需要获取多少数据)。它返回的值存储在备份字段中,并且每个字段都返回相同的值。

另一个头上的第二个解决方案显然像一个方法,因为它可以在每个调用中返回不同的列表,因此我将使V2成为一个方法。

我怎么才能对发生的事情有更好的感觉呢?

这个if就是答案:

如果(_tableTypeList == null) { var temp = TableTypes.OrderBy(t => t.ID);_tableTypeList = ((IListSource)temp).GetList()作为BindingList;}

我惊讶地发现,对TableTypesList1的另一个电话并没有调用getter。

可能是这样的,但是当您将断点放入if中时,显然不会再次调用这个块。

票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/162545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档