是否有理由在字段上使用非常简单的属性?

本文关键字:简单 非常 属性 有理由 字段 是否 | 更新日期: 2023-09-27 18:14:38

我现在有这样的代码:

public class General
{
    /// <summary>
    /// Private variables.
    /// </summary>
    private const float fVersion = 1.3f;
    private static bool bMonitoring = false;
    /// <summary>
    /// Retrieves the current version of the application.
    /// </summary>
    public static float Version
    {
        get
        {
            return fVersion;
        }
    }
    /// <summary>
    /// Are we monitoring performance?
    /// </summary>
    public static bool Monitoring
    {
        get
        {
            return bMonitoring;
        }
        set
        {
            bMonitoring = value;
        }
    }
}

如果我检查General.bMonitoringGeneral.Version经常(也许…超过100次/秒!)并且真正关心性能:让我的类这样写是一个好的实践,还是我应该简单地删除这些属性并使字段公开?

是否有理由在字段上使用非常简单的属性?

在这种情况下,如果您不打算向getter或setter添加一些逻辑,那么我会使用静态字段。性能将是一样的。

但是,如果以后你需要额外的逻辑,当你设置或获取值,那么它更倾向于使用属性,因为它允许版本控制,它给你封装根据OOP原则。不要在意性能

对于Monitoring属性,您可以使用自动实现的属性,如

public static bool Monitoring { get; set; }

但是在这种情况下你需要实现一个静态构造函数(多亏了@Mafii)

    static General()
    {
        Monitoring  = false;
    }

或者如果你使用c# 6.0,那么只需:

public static bool Monitoring { get; set; } = false;

不用担心性能。属性访问是(而且应该是)非常快的,编译器可以内联它们。

属性比字段更受欢迎,不是因为性能,而是因为封装和它在以后需要检查或计算属性时真的很有帮助。

Jon Skeet的更多文章http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx