C# 解释DateTime.Now在.Net中的设计
我有一个关于.Net framework中日期对象的设计的问题,更具体地说是Now属性 我知道现在是一个日期类型的属性。(这很有意义,因为我看到了方法.AddHours()、AddYears()等)如果现在是类(或结构),它如何直接返回值 例如:如何在C#/VB.net中创建一个类或结构,使我能够在不调用Now属性的情况下执行相同的操作 (VB.Net) 将WeatherObject暗显为新的WeatherReporter() 如果WeeatherReport有一个名为TodaysWeather的属性,这是一个类,那么我怎么能得到这样的值C# 解释DateTime.Now在.Net中的设计,c#,.net,asp.net,vb.net,oop,C#,.net,Asp.net,Vb.net,Oop,我有一个关于.Net framework中日期对象的设计的问题,更具体地说是Now属性 我知道现在是一个日期类型的属性。(这很有意义,因为我看到了方法.AddHours()、AddYears()等)如果现在是类(或结构),它如何直接返回值 例如:如何在C#/VB.net中创建一个类或结构,使我能够在不调用Now属性的情况下执行相同的操作 (VB.Net) 将WeatherObject暗显为新的WeatherReporter() 如果WeeatherReport有一个名为TodaysWeather
Dim TheForecast as string=WeatherReporter.TodaysWeather
Dim PlainTextReport as string=WeeatherReport.TODAYSHEATHER
在我看来,你今天要取消她的另一处房产。但对于Datetime,现在的例子是你不需要。不管怎样,我知道这是个奇怪的问题。我只是想更好地理解这些物体是如何被放置在引擎盖下的
谢谢你告诉我这件事
下面是一个涉及上述问题的代码示例
Public Class WeatherReporter
Shared ReadOnly Property TodaysWeather As DayWeather
Get
TodaysWeather = New DayWeather
Return TodaysWeather.Current
End Get
End Property
End Class
Public Class DayWeather
Public Property Current As String = "Sunny"
End Class
现在类似于DateTime.Now对象
你怎么能说出这样的天气例子
Dim TheForecast as string=WeatherReporter.TodaysWeather
这似乎需要以下几点
Dim TheForecast as string=WeatherReporter.TodaysWeather.Current
我知道这是一个令人困惑的问题,lol。谢谢你的耐心。。网络属性不仅仅是值——它们围绕基础值封装了getter和setter方法。在这种情况下,它们可以在返回对象之前初始化对象。因此,例如,
DateTime.Now
可以这样实现(无需尝试通过反射器或参考源找到其实际实现…):
现在公开静态日期时间
{
得到
{
var d=new DateTime(){.Kind=DateTimeKind.Local};
//确定当前系统时间并将d设置为该值的逻辑
返回d;
}
}
(ref:)反映了源代码,很明显,它只是一个函数的属性包装
public static DateTime Now
{
get
{
return UtcNow.ToLocalTime();
}
}
您不需要实例化DateTime对象,因为该属性被标记为
static
DateTime。现在在VB.net中类似于此
public structure DateTime
...other code...
''// `shared` makes this a class property, not an instance property.
''// This is what lets you say `DateTime.Now`
public shared readonly property Now as DateTime
get
... do some magic to return the current date/time ...
end get
end property
... other code ...
end class
或者在C#中:
它是作为静态getter方法实现的。我相信在你的WeatherReporter课程中,你要找的东西会是这样的:
Public Shared ReadOnly Property TodaysWeather As WeatherReporter
Get
Return New WeatherReporter(DateTime.Now)
End Get
End Property
假设WeatherReporter类有一个构造函数,该构造函数接受DateTime
DateTime.Now是一个静态/共享属性。您不必实例化新对象(使用new DateTime()
)来调用它。感谢您的反馈。在C#或VB.Net中,如何在不引用属性的情况下从代码行中的类返回值?Now对象内部是否有默认属性?“Now”不是对象-它是DateTime类中的属性。我应该更清楚地说明这一点。另外,@cHao在下面指出,Now
属性的重要一点是它是静态的。它实例化了它根据需要返回的DateTime
,它不需要现有的实例。只需添加,因为这显然是他的问题:这里的重要性是static关键字(或在VB中共享),它使它成为该类型的方法/属性,不是实例。挑剔:这实际上是对另一个属性返回值的方法调用的包装。:)但原则是一样的。