试图在一年内列出所有星期一和他们的日期

Ner*_*rth 1 vb.net date

我试图列出所有星期一和他们的日期,比方说,2014年.我不知道下面的代码有什么问题(可能是循环).当我执行这些程序时,程序崩溃.

    Dim d1 As DateTime = #1/1/2014#
    Dim d2 As DateTime = d1.AddDays(-(d1.DayOfWeek - DayOfWeek.Monday))

    Do
        ListBox1.Items.Add(d2.ToString("MMM - dd - yyyy   ddd"))
        d2.AddDays(7)
    Loop While (d2.Year < 2015)
Run Code Online (Sandbox Code Playgroud)

Gab*_*abe 5

一个DateTime实例是不可变的,这意味着它不能被改变.该d2.AddDays(7)表达式创建一个具有不同值的实例,您可以将其分配回d2:

d2 = d2.AddDays(7)
Run Code Online (Sandbox Code Playgroud)

那么为什么你的程序会崩溃?由于日期永远不会改变,因此它永远不会达到2015年,并且您的程序将尝试向列表框添加无限多个项目.显然,在发生这种情况之前你会耗尽内存,这会导致程序崩溃.