我正在尝试制作一个 vb.net 程序,在用户选择的特定时间,代码将执行。为此,我需要检查每分钟以检查用户输入的小时和分钟是否与当前时间匹配(除非有更好的方法来执行此操作)。我试着用
Dim CurrentHour As Integer = Hour(Now())
但是程序给了我一个错误信息说,
表达式不是数组或方法,不能有参数列表
我将使用 Do Loop 进行检查,但当然要查看两者是否匹配,我需要当前的 Hour 和 Minute
我正在尝试制作一个 vb.net 程序,在用户选择的特定时间,代码将执行。为此,我需要检查每分钟以检查用户输入的小时和分钟是否与当前时间匹配(除非有更好的方法来执行此操作)。我试着用
Dim CurrentHour As Integer = Hour(Now())
但是程序给了我一个错误信息说,
表达式不是数组或方法,不能有参数列表
我将使用 Do Loop 进行检查,但当然要查看两者是否匹配,我需要当前的 Hour 和 Minute
你的代码是正确的。你需要关注我们的是这样的东西:
Dim Now As Date
Dim CurrentHour = Hour(Now())
这会产生错误 BC30471:表达式不是数组或方法,并且不能有参数列表。
您现在可能看到了问题,Now 变量隐藏了 Now 函数。编译器现在感到困惑,它不明白为什么存在括号。并且正确地抱怨 Now 不是一个数组,也不是一个方法。不是,不再是。
除了重命名变量之外,您还可以通过提供更完整的名称来解决它:
Dim CurrentHour = Hour(DateAndTime.Now())
尽管这变得相当模糊,但使用DateTime.Now
的是 .NET 方式而不是 Basic 方式。
您应该使用本机 DateTime属性:
Dim CurrentHour As Integer = Now().Hour
如果您想使用 Hour 方法,您可能需要将其完全限定为:
Microsoft.VisualBasic.Hour(Now())
因为 Hour 很可能是应用程序中其他地方的属性或方法。
Dim Inputtime As DateTime
if Inputtime = Date.Now.Hour Then
MsgBox("Success!")
End If
我不会使用 do 循环,因为它会消耗程序的所有内存。我会使用一个每分钟计时一次的计时器。并让它触发这个子例程。
任务计划程序是一个选项。我宁愿使用Marshal.FinalReleaseComObject
代码底部的循环,GC.Collect
之后需要再次调用GC.WaitForPendingFinalizers()