double dailyRate = readDouble("Enter your daily rate: "); int noOfDays = readInt("Enter the number of days: "); writeFee(calculateFee(dailyRate, noOfDays)); |
private double readDouble(string p) { throw new Exception("The method or operation is not implemented."); } |
Console.Write(p); string line = Console.ReadLine(); return double.Parse(line); |
Console.Write(p); string line = Console.ReadLine(); return int.Parse(line); |
private object calculateFee(double dailyRate, int noOfDays) { throw new Exception("The method or operation is not implemented"); } |
private double calculateFee (double dailyRate, int noOfDays) { throw new Exception("The method or operation is not implemented"); } |
return dailyRate * noOfDays; |
private void writeFee(double p) { ... } |
Console.WriteLine("The consultant's fee is: {0}", p * 1.1); |
注意 这个版本的WriteLine方法演示了如何利用一个简单的格式字符串。{0}是一个占位符;在求值的时候,它会被字符串之后的表达式(p * 1.1)的值替换掉。
11. 选择“生成”|“生成解决方案”。
提示 如果对语法已经充分熟悉,也可以通过直接在“代码和文本编辑器”窗口中输入的方式来编写方法。并非一定要使用“生成方法存根”选项。
精品教程尽在www.xvna.com
重构代码
Visual Studio 2005非常有用的一项特性就是对代码进行重构。某些时候,我们需要在应用程序的多个位置写相同的(或者非常相似的)代码。在这种情况下,可以选定刚刚输入的代码块,然后从菜单栏中选择“重构”|“提取方法”。随后会出现“提取方法”对话框,提示你输入一个新方法的名称,该方法将用于包含你刚才输入的代码。请输入方法名,并单击“确定”。随后,系统将创建这个方法,并将你刚才输入的代码转移到其中,刚才输入的代码则被替换成对该方法的一个调用。“提取方法”还具有一定的智能,可以判断方法是否应该获取任何参数和返回值。
测试程序
1. 选择“调试”|“开始执行(不调试)”,Visual Studio 2005将生成程序,并运行它。运行时会显示一个控制台窗口。
2. 在Enter Your Daily Rate(输入日费率)提示之后,请输入525,然后按回车键。
3. 在Enter The Number Of Days(输入天数)提示之后,请输入17,然后按回车键。
程序会在控制台上显示以下消息:
The consultant’s fee is: 9817.5
按回车键返回Visual Studio 2005编程环境。
在最后一个练习中,将使用Visual Studio 2005调试器,以比较慢的步调来运行程序。你将看到每个方法被调用的时刻(这个行动称为跳入),并看到每个return语句如何将控制返还给调用者(这个行动称为跳出)。进入和离开方法时,都需要使用“调试”工具栏上的工具。然而,在调试模式中运行应用程序时,相同的命令也可从“调试”菜单中选择。
使用Visual Studio 2005调试器依次执行每个方法
1. 在“代码和文本编辑器”窗口中,找到run方法。
2. 使鼠标指针对准run方法中的第一个语句。
run方法的第一个语句是:
double dailyRate = readDouble("Enter your daily rate: ");
3. 右击该行的任何地方,从弹出菜单中选择“运行到光标处”。
程序将开始运行,并在抵达run方法的第一个语句之后暂停。“代码和文本编辑器”窗口左侧的一个黄色箭头指明了当前语句,该语句还会用一个黄色背景来突出显示。
4. 选择“视图”|“工具栏”,确定已经勾选了“调试”工具栏。“调试”工具栏也许会停靠在其他工具栏旁边。如果找不到这个工具栏,可以试着使用“视图”菜单中的“工具栏”命令暂时隐藏它,并留意哪些按钮从界面上消失了。重新显示这个工具栏,就可以知道它应该在什么位置出现。
提示 要想将“调试”工具栏独立出来,请使用工具栏左侧的控点,把它拖放以“代码和文本编辑器”窗口上方。
5. 单击“调试”工具栏上的“逐语句”按钮。这个行动会使调试器跳入正在调用的方法。左侧的黄色箭头会指向readDouble方法的起始大括号。再次单击“逐语句”按钮,指针会转向第一个语句:Console.Write(p);
提示 按F11键的作用等同于单击“调试”工具栏上的“逐语句”按钮。
6. 单击“调试”工具栏上的“逐过程”按钮。这会导致方法执行下一个语句而不调试它。黄色箭头将指向方法的第二个语句,程序会在一个控制台窗口中显示“Enter Your Daily Rate”提示(控制台窗口可能隐藏在Visual Studio 2005后面)。
提示 按F10键的作用等同于单击“调试”工具栏上的“逐过程”按钮。
7. 单击“调试”工具栏上的“逐过程”按钮。这一次,黄色箭头会消失,控制台窗口将获得焦点,因为程序正在执行Console.ReadLine方法,要求用户输入一些内容。
8. 在控制台窗口中输入525,按回车键继续。
随后,控制将返回Visual Studio 2005。黄色箭头将在方法的第三行出现。
9. 不要做出任何单击行动,请将鼠标指针移至方法第二行或第三行对line变量的引用上(具体对准哪一行无关紧要)。
随后会出现一条屏幕提示,它显示了line变量的当前值(525)。利用这个特性,可以确定在逐方法执行的时候,变量已经设置成自己期望的一个值。
10. 单击“调试”工具栏上的“跳出”按钮。
这会导致当前方法继续无中断地运行,直到结束。当readDouble方法执行完毕之后,黄色箭头会指回run方法的第一个语句。
提示 按Shift + F11键的作用等同于单击“调试”工具栏上的“跳出”按钮。
11. 单击“调试”工具栏上的“逐语句”按钮。
黄色箭头会移至run方法的第二个语句:
int noOfDays = readInt("Enter the number of days: ");
12. 单击“调试”工具栏上的“逐过程”按钮。
这一次,选择了直接运行方法,而不逐语句地调试该方法。控制台窗口将再次出现,提示输入一个天数。
13. 在控制台窗口中输入17,按回车键继续。
控制将返回至Visual Studio 2005。黄色箭头将移至run方法的第三个语句:
writeFee(calculateFee(dailyRate, noOfDays));
14. 单击“调试”工具栏上的“逐语句”按钮。
黄色箭头将跳至calculateFee方法的起始大括号处。该方法将先于writeFee方法被调用。
15. 单击“调试”工具栏上的“跳出”按钮。
黄色箭头将跳回run方法的第三个语句。
16. 单击“调试”工具栏上的“逐语句”按钮。
这一次,黄色箭头将跳至writeFee方法的起始大括号处。
17. 让鼠标指针对准方法定义中的p变量。
随后将显示p的值(8925.0)。
18. 单击“调试”工具栏上的“跳出”按钮。
随后会在控制台窗口中显示消息“The consultant’s fee is: 9817.5”(如果控制台窗口隐藏在Visual Studio 2005之后,请把它带到前台来显示)。黄色箭头将返回run方法的第三个语句。
19. 单击“调试”工具栏上的“继续”按钮,使程序连续运行,而不在每个语句处暂停。
应用程序将一直运行至结束。
提示 还可以按F5键在调试器中继续执行。
恭喜!你已经成功编写并调用了方法,并利用Visual Studio 2005调试器对它们进行了调试。