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;}
对于如此简单的属性,您以何种方式访问它们并不重要:尽管访问备份变量似乎要快一点,但优化器将负责优化函数调用,使两种访问速度相同
当属性更复杂时,例如,当它具有额外的验证和/或触发事件时,决策会变得更复杂:您需要决定是希望与访问属性相关联的效果,还是希望避免这些效果。然后你根据你想要发生的事情做出决定。可能的重复可能的重复