gpt4 book ai didi

c# - 在 getter 中使用 if 表达式

转载 作者:行者123 更新时间:2023-11-30 19:40:46 25 4
gpt4 key购买 nike

只使用公共(public)属性 是否正确,还是我应该创建一个私有(private)字段_count?我已阅读有关该主题的一些信息,但找不到答案。

public int Count
{
get
{
if (this._feeds.IsValueCreated)
{
return this._feeds.Value.Count;
}
else
{
return this._dbConnection.Table<T>().Count();
}
}
}

public FeedRepository(SQLiteConnection dbConnection)
{
this._dbConnection = dbConnection;
this._feeds = new Lazy<IList<T>>(() => _dbConnection.Table<T>().ToList());
}

最佳答案

这是特性真正闪耀之处的经典示例。

属性允许您 encapsulate数据,在本例中为 Count实际上是在做一些聪明的事情,因为它在第一次访问时从数据库中延迟加载,然后从本地缓存中拉出。在这里在字段上使用属性的美妙之处在于,您可以将所有这些逻辑隐藏在访问器后面,就消费者而言,他们只需要知道 Count。属性(property)。

另一方面,如果您使用了 _count那么消费者将需要了解他们必须首先加载该值,否则需要提前加载以进行准备。

所以,是的,特性绝对是前往这里的方式。

关于c# - 在 getter 中使用 if 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21905692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com