C#在同一类中使用字段或属性

本文关键字:字段 属性 一类 | 更新日期: 2023-09-27 18:27:49

当引用类内的值(来自同一类)时,应该使用可以从其他类访问的字段或属性吗?

例如,我应该以哪种方式引用类中的变量,为什么?

public static class Debug
{
    private static int _NumberOfEvents = 1;
    public static int NumberOfEvents
    {
    get
    {
        return _NumberOfEvents;
    }
    set
    {
        _NumberOfEvents = value;
    }
}
public static void LogEvent(string Event)
{
    //This way?
    Console.WriteLine("Event {0}: " + Event, _NumberOfEvents);
    _NumberOfEvents++;
    //Or this way?
    Console.WriteLine("Event {0}: " + Event, NumberOfEvents);
    NumberOfEvents++;
}

}

感谢

C#在同一类中使用字段或属性

当它是这样一个简单的属性时,考虑用"自动"属性替换它,比如:

public static int NumberOfEvents {get;set;}

对于如此简单的属性,以哪种方式访问它们并不重要:尽管访问后备变量可能看起来有点快,但优化器将负责优化函数调用,使两种访问速度相等。

当属性更复杂时,例如,当它具有额外的验证和/或触发事件时,决策会变得更复杂:您需要决定是希望具有与访问属性相关的效果,还是希望避免这些效果。然后你根据你想要发生的事情做出决定。

最后可能没有区别,因为JITter无疑会内联使用属性时生成的函数调用。。直接进入现场。

就我个人而言(在我参加过的团队中,包括目前的团队),我们使用字段,并将属性留给类外访问。。除非它们是自动属性(令人惊讶的是,这对我们来说很少发生),或者它们包含逻辑。