是否有理由在字段上使用非常简单的属性?
本文关键字:简单 非常 属性 有理由 字段 是否 | 更新日期: 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.bMonitoring
或General.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