DateTime.Today错误

时间:2011-04-15 15:46:00

标签: vb.net

在VS2010中,对于VB.NET 4.0项目,IDE在以下代码的最后一行下面放置一条绿线:

Dim cityLocal As DateTime
cityLocal = externalFunction()
cityLocal.Today()

建议的代码替换是用'Date'更新'cityLocal'。原因是: 通过实例访问共享成员,常量成员,枚举成员或嵌套类型;不会评估合格表达式。

但它确实编译并且确实可以正常工作。这只是VS2010中的一个错误吗?

3 个答案:

答案 0 :(得分:3)

今天是共享成员,因此不应该(但可以)通过DateTime实例访问,将代码更改为。

DateTime.Today

虽然Visual Studio为您提供了纠正“错误”的建议,但它实际上是编译器警告,警告您不需要实例来访问共享成员。您会发现它未在错误列表中列为错误。这就是它正确编译的原因。

Visual Basic语言规范说明

  

9.2.4共享方法

     

共享修饰符表示方法   是一种共享方法。共享方法   不适用于特定的   类型的实例,可以调用   直接来自一个类型而不是   通过一个特定的例子   类型。但是,使用一个是有效的   实例以限定共享方法。

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=01EEE123-F68C-4227-9274-97A13D7CB433

有关警告的更多信息,请参阅文档。

http://msdn.microsoft.com/en-us/library/y6t76186.aspx

答案 1 :(得分:0)

Date.Todaystatic(VB.NET中的Shared)属性。您可以从实例中使用它,因为编译器知道进行正确的调用,但它不是预期的使用模式,这对于直接从实例使用来说既不必要也不可取。

作为静态变量,您应该使用Date.Today而不是variable.Today

答案 2 :(得分:0)

今天是共享/静态成员。通常你会使用DateTime.Today而不是你的实例变量。

http://msdn.microsoft.com/en-us/library/system.datetime.today.aspx