c# - C# 访问器应该使用私有(private)变量还是即时计算?

标签 c# performance accessor

哪种编程实践更好,为什么?

我有这样一个类:

class data {

    public double time { get; internal set; }
    public double count { get; internal set; }
    public average_count { ... }

}

其中 average_count 应该是 read_only 并给出计数/时间的计算。

将访问器写成这样更好吗:

public average_count { get {

    return (time == 0) ? 0 : (count / time);

}}

或者我应该这样做:

private _avg_count;

public average_count {
    get 
    {
        return _avg_count;
    }

    internal set
    {
        return _avg_count;
    }
}

在时间和计数集访问器中更新 _avg_count 的位置?

看起来第一个更容易阅读,但如果经常访问 average_count 可能会更慢。编译器优化是否会使差异变得微不足道?

最佳答案

即时执行此操作会产生更具可读性的代码。预先计算可能会提高性能,但只有在 (a) 有必要并且 (b) 您已经进行分析并且它有所作为时才应该这样做。

底线是,只有在绝对必要时才应该为了性能而牺牲可读性和可维护性。

关于c# - C# 访问器应该使用私有(private)变量还是即时计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559478/

相关文章:

c# - 如何在 C# 中向名称以特定字符串开头的所有按钮添加单击事件?

c# - 在 C# 中究竟什么时候执行事件?

ios - NSOrderedSet 的核心数据生成访问器是什么样的?

c# - 我如何判断一个 Action 是否是 lambda 表达式?

python - 使用 OpenCV 和 NumPy 提高数组提取速度

java - Slick2D游戏变速

php - CSS 图像减速

Java:访问资源和得墨忒耳法则

python - 为什么 pandas DataFrame 的 .at 访问器不是方法?

c# - 使用 System.Windows.Forms.Datagrid