为什么我连续输错了4次就直接退出循环了,我要错误的情况下,一直循环下去

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Menu_switching
{
class Program
{
static void Main(string[] args)
{
int number=1,number1=2,number2=3,number3=4;
string commodity="客户信息管理",commodity1="购物结算",commodity2="真情回馈",commodity3="注销";
Console.WriteLine("欢迎使用MYSHOPPING管理系统");
Console.WriteLine("***********************************");
Console.WriteLine(number +"."+ commodity);
Console.WriteLine(number1 + "." + commodity1);
Console.WriteLine(number2 + "." + commodity2);
Console.WriteLine(number3 + "." + commodity3);
Console.WriteLine("***********************************");

        int figure;

        do
        {

            Console.WriteLine("请输入数字:");
            figure = int.Parse(Console.ReadLine());
            switch (figure)
            {
                case 1:
                    Console.WriteLine(number + "." + commodity);
                    break;
                case 2:
                    Console.WriteLine(number1 + "." + commodity1);
                    break;
                case 3:
                    Console.WriteLine(number2 + "." + commodity2);
                    break;
                case 4:
                    Console.WriteLine(number3 + "." + commodity3);
                    break;
                default:
                    Console.WriteLine("输入错误,请重新输入");
                    break;

            }



        } while (figure<=5);

    }
}

}

别人告诉我,把while (figure<=5);改成while (true);就可以了,我试了一下果然可以了,但是我就是想不通原因是什么,谁帮我分析一下,我写的为什么会这样(连续错误4次就跳出循环了),而这个true我又搞不懂它在判断哪个的值为true才又去执行do里面的代码了?

首先while (figure<=5),是判断你输入的是不是小于等于5,只有满足这个条件才会执行do(do...while()是先执行一次do,然后在判读while的条件语句,所以不论你第一次输入的什么,循环都回执行一次)。改成while (true)之后,while得条件语句是true,也就是条件语句一直为真,所以会一直执行循环。这个true没有判断任何值

do...while()是先执行一次do中的循环体, 再判读while的条件语句,所以不论你第一次输入的什么,循环体都回执行一次。while (true)中,true表示一直为真,所以会一直执行。另外,如果输入figure的值为大于5的话还会先执行do的,然后再结束循环