我已经编写了很长很长时间,自学成才。现在我正在攻读计算机科学学位,我的编程课正在讨论测试后循环,do-while循环。
现在我明白它运行一次,然后检查条件......因为我是一名网络程序员,我想知道:什么是一些常见的Web开发(ASP.NET MVC / Razor最好)场景,其中一个 - while循环完美适合?
我并没有完全理解这个概念......
答案 0 :(得分:3)
我参与了许多网络项目,我不记得这种类型的循环的任何特定用途。在Web上,您通常只使用项目集合并对每个项目执行一些逻辑。所以我想说大多数网络开发者只使用foreach
和for
。
Do - 虽然更适合算法和计算,但您在经典的Web开发中并没有做很多这样的事情。
答案 1 :(得分:1)
我不了解MVC,但几年前我不得不创建一个管理页面来输入数据,在客户端你可以添加新字段来添加员工成员档案。 (姓名,职称,教育)
控件是使用JavaScript在客户端创建的,并按顺序编号,如:
txtStaffName0
txtStaffName1
txtStaffName2
然后使用do / while,条件检查控件的下一个递增数字。有点像:
int count = 0;
do
{
//find control with count and do stuff...
count++;
} while (DoesControlExist(count));
除此之外,我认为我从未见过这样做/在网络相关的东西中使用...
答案 2 :(得分:1)
由于大多数接口逻辑已在客户端实现(为了节省带宽和性能原因),因此几乎不需要此循环。 Web和控制台(或Windows应用程序)中的程序流程之间的区别在于,网页在许多用户的上下文中运行,而Windows应用程序主要由单个用户使用,其中用户可以选择管理控制流,如继续或退出
答案 3 :(得分:0)
我敢打赌,如果遇到需要先检查的情况,语法就会显示出来。
do {
// Do your algo first.
} while (true); // Check later.
现在在实际代码中,我可以假设:
int x = 100;
do {
x = y - 10;
} while (x >= 0);
它类似于C的for循环中x++
和++x
的概念,它会让你决定现在或稍后递增。
答案 4 :(得分:0)
根据我的经验,循环的使用因需求而异。
如果您遍历集合并对集合中的每个对象执行某些操作,则每个对象都可以免于运行时异常。
但是如果你想根据条件从集合中删除一个项目,那么每个都不起作用,那么for循环是最好的。从collection.count() - 1到0。
常用for循环用于执行某些操作或计算。
我个人很少使用do。
答案 5 :(得分:0)
昨天我差点问这个问题。在我多年的Web开发中,我想不出有一次我在生产代码中使用了do / while。另一方面,我也几乎没有使用递归,但是在我想要它的那几个场合,它很好。
无论如何,this article建议在控制台应用中使用它来显示菜单并在每次输入后重绘它。这是文章代码的编辑片段:
string myChoice;
do
{
// Print A Menu
Console.WriteLine("My Address Book\n");
Console.WriteLine("A - Add New Address");
Console.WriteLine("D - Delete Address");
Console.WriteLine("Q - Quit\n");
Console.WriteLine("Choice (A,D,M,V,or Q): ");
// Retrieve the user's choice
myChoice = Console.ReadLine();
// Make a decision based on the user's choice
switch(myChoice)
{
case "A":
Console.WriteLine("You wish to add an address.");
break;
case "D":
Console.WriteLine("You wish to delete an address.");
break;
case "Q":
Console.WriteLine("Bye.");
break;
}
Console.WriteLine();
} while (myChoice != "Q"); // Keep going until the user wants to quit
这似乎相当有用。当然,您可以通过将myChoice
的初始值设置为“Q”以外的其他值,或者通过在while
条件中添加bool,或类似的东西来绕过它,但是/同时轻松完成工作。它不像递归那样必不可少;我认为显着比什么时候更好(如果有的话)。但它是C的延续,它偶尔会有用,所以没有理由摆脱它。