最好用一个例子来解释:
int RecordCount
{
return dataAdapter.getCount(); // database access
}
现在,每次在代码中调用它时,都会有数据库查找。但是,如果我将RecordCount
分配给如下的局部变量:
int recordCount = RecordCount;
// multiple calls to recordCount follow...
我假设每次访问本地变量recordCount
时都会有数据库查找,因为recordCount
只是对RecordCount
的引用。但是,我的同事认为查找只会在初始分配时进行,然后recordCount可以自由使用,不会再造成数据库惩罚。
正如旧的周一夜足球IBM广告用来说,你打电话。
答案 0 :(得分:4)
你的同事是对的,你错了。
它与recordCount
作为参考无关。访问field
没有副作用。
如果recordCount
是property
,那么根据getter实现,您可以进行数据库查找,这正是RecordCount
中发生的情况。
答案 1 :(得分:0)
RecordCount
返回int
,其设置为recordCount
的值。只有在您直接引用RecordCount
时才会调用getter。
您没有将RecordCount
作为recordCount
的方法,而是RecordCount
返回的值。
答案 2 :(得分:0)
int(System.Int32)是值类型 - 因此在赋值时复制该值(与引用类型不同)。
注意:考虑不要在属性获取者中进行昂贵的操作。