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

9

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

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

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

}

感谢


可能是 在类内部应该引用属性还是成员变量? 的重复问题。 - lc.
可能是重复的问题:在同一类中通过属性访问变量是否合适? - Michael Liu
2个回答

5

如果属性很简单,考虑将其替换为“自动”属性,像这样:

public static int NumberOfEvents {get;set;}

这些属性很简单,因此无论您以何种方式访问它们都是无所谓的:尽管访问支撑变量似乎会更快一些,但优化器会处理优化函数调用,使两种访问同样快。

当属性更复杂时,例如具有附加验证和/或触发事件时,决策变得更加复杂:您需要决定是否要与访问属性相关的效果,或者是否希望避免它们。然后根据您希望发生的情况做出决策。


3

最终可能没有区别,因为JITter无疑会将使用属性时生成的函数调用内联到直接字段访问中。

个人而言(包括我所在的团队),我们使用字段并将属性保留用于类外访问,除非它们是自动属性(令人惊讶的是,这种情况对我们来说很少发生)或者包含逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接