Getter命中数据库,本地变量未命中

本文关键字:变量 数据库 Getter | 更新日期: 2023-09-27 17:58:36

最好用一个例子来解释:

int RecordCount
{
   return dataAdapter.getCount(); // database access
}

现在,每次在代码中调用它时,都会进行数据库查找。但是如果我把RecordCount分配给一个局部变量,比如

int recordCount = RecordCount;
// multiple calls to recordCount follow...

我假设每次访问本地变量recordCount时,都会进行数据库查找,因为recordCount只是对RecordCount的引用。然而,我的同事认为,查找只会在初始分配时发生,然后recordCount可以自由使用,而不会对数据库造成更多损失。

正如IBM过去的"周一夜足球"广告所说,"你来决定"。

Getter命中数据库,本地变量未命中

你的同事是对的,你错了。

它与recordCount是否作为参考无关。使用field不会产生副作用。

如果recordCountproperty,那么根据getter实现,您可以进行数据库查找,这正是RecordCount中发生的情况。

RecordCount返回一个int,该值被设置为recordCount的值。getter只有在直接引用RecordCount时才会被调用。

您不是将RecordCount作为方法分配给recordCount,而是将RecordCount返回的值。

int(System.Int32)是值类型,因此赋值时会复制值(与引用类型不同)。

注意:考虑不要在属性getter中执行代价高昂的操作。