我刚刚看到一些使用 struct DateTime.Today 的代码片段,但我无法理解它的内部工作原理。具体行如下:
if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
使用Go To Definition F12后,我看到Today静态方法返回 包含当前计算机中的日期信息的 DateTime 对象。我认为 Today 方法 作为构造函数包装器工作。我无法推断(更像是猜测)是如何在不首先实例化 Today 结构的情况下访问属性 DayOfWeek。
有人可以解释一下这怎么可能吗?我唯一的猜测是,当 VS 将代码编译为 IL 时,可能会将这个语法糖转换为:
if ( (DateTime.Today()).DayOfWeek == DayOfWeek.Monday )
也许这就像水一样干净,但我是 C# 新手,所以我无法弄清楚。
提前致谢!
最佳答案
与您的问题相关,DateTime.Today
是 DateTime
的 Property
类型,因此它具有 DateTime.DayOfWeek
Property
作为任何常规DateTime
结构。
从更广泛的意义上讲,Properties
在 C# 中如何工作:在第一个近似中,为了更好地理解,您可以将 Properties
视为 Methods
伪装成看起来像一个字段,因此您将 Today
解释为某种假设的 GetToday()
方法在逻辑上是接近的,但不是“学术上精确的”(请参阅评论@CalebB)。
我建议您熟悉 .NET Properties
( https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx ) 和 DateTime
Structure
( https://msdn.microsoft.com/en-us/libraRy/system.datetime.aspx )
希望这会有所帮助。
关于c# - 属性在 C# 中实际上是如何工作的,例如 DateTime.Today?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095315/