Getter命中数据库,局部变量不?

时间:2011-06-08 15:57:45

标签: c# variables scope

最好用一个例子来解释:

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

现在,每次在代码中调用它时,都会有数据库查找。但是,如果我将RecordCount分配给如下的局部变量:

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

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

正如旧的周一夜足球IBM广告用来说,你打电话。

3 个答案:

答案 0 :(得分:4)

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

它与recordCount作为参考无关。访问field没有副作用。

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

答案 1 :(得分:0)

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

您没有将RecordCount作为recordCount的方法,而是RecordCount返回的值。

答案 2 :(得分:0)

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

注意:考虑不要在属性获取者中进行昂贵的操作。