当引用类中的值(来自同一个类中)时,是否应该使用可以从其他类访问的字段或属性?
例如,我应该在哪个方面引用我班级中的变量,为什么?
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++;
}
Run Code Online (Sandbox Code Playgroud)
}
谢谢
当它是这样的简单属性时,请考虑将其替换为"自动"属性,如下所示:
public static int NumberOfEvents {get;set;}
Run Code Online (Sandbox Code Playgroud)
使用这些简单的属性,访问它们的方式无关紧要:虽然访问后备变量可能看起来更快一些,但优化器将负责优化函数调用,使两个访问同样快速.
当属性更复杂时,例如,当它具有其他验证和/或触发事件时,决策变得更加复杂:您需要决定是否要获得与访问属性相关联的效果,或者您是否希望避免他们.然后根据您想要发生的事情做出决定.
最终可能没有什么区别,因为 JITter 无疑会将使用属性时生成的函数调用内联到直接字段访问中。
就我个人而言(在我所在的团队中,包括当前的团队),我们使用字段并保留属性以供类外访问..除非它们是自动属性(令人惊讶的是..对我们来说很少发生)或者它们包含逻辑。
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |