asp.net vb.net может ли кто-нибудь объяснить, что не так?

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Что не так с этим кодом?

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim i As Integer = 0
    Do
        Response.Write("hello")
    Loop While i < 5
End Sub
  

У меня ошибка

 System.OutOfMemoryException was unhandled
Insufficient memory to continue the execution of the program.
  

Кто-нибудь может объяснить, почему у меня эта ошибка?

Комментарии:

1. Вы никогда не увеличиваете i. Итак, ваш цикл продолжается вечно

2. @DavidCram Это тоже была моя первая мысль, но мне трудно понять, почему это вызывает OutOfMemoryException . Мне интересно, буферизует ли он ответ. Напишите вывод, и он в конечном итоге уничтожит всю память, доступную для этого буфера.

3. @DavidCram спасибо, это решает мою проблему

Ответ №1:

Это фиксированная версия вашего кода:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim i As Integer = 0
    Do
        Response.Write("hello")
        i = i   1
    Loop While i < 5
End Sub
  

Ответ №2:

Итак, ваш вопрос: «почему не хватает памяти». Потому что .NET Framework может получить доступ только к такому объему памяти. По сути, ваш цикл гласит: «продолжайте сжигать память, пока компьютер не выйдет из строя или Иисус не вернется». Поскольку Армагеддон не произошел, и Фреймворк имеет защиту от сбоя компьютера, ваш предполагаемый результат завершается неудачей, и вместо этого он выдает ошибку нехватки памяти, когда вы просматриваете память своим циклом, в котором нет условия завершения или приращения, чтобы избежать бесконечного цикла (или пока Фреймворк не остановит вас от сбоякомпьютер). 😉