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

C#在同一类中使用字段或属性,c#,C#,当引用类内的值(来自同一类内)时,是否应使用可从其他类访问的字段或属性 例如,我应该以何种方式引用类中的变量,为什么 public static class Debug { private static int _NumberOfEvents = 1; public static int NumberOfEvents { get { return _NumberOfEvents; } set { _

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

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

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++;
}
}


谢谢

最后可能没有什么不同,因为抖动无疑将内联使用属性时生成的函数调用。。直接进入现场访问


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

< P>当它是一个简单的属性时,考虑用一个“自动”属性替换它,例如:

public static int NumberOfEvents {get;set;}
对于如此简单的属性,您以何种方式访问它们并不重要:尽管访问备份变量似乎要快一点,但优化器将负责优化函数调用,使两种访问速度相同

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

可能的重复可能的重复