cari

在下面的练习中,将创建一个应用程序,它包含的一个方法能够计算一名顾问的收费金额——假定该顾问每天收取固定的费用,将根据工作了多少天来收费。首先要开发应用程序的逻辑,然后利用“生成方法存根向导”来写出这个逻辑使用的方法。接着,我们将在一个控



  开发应用程序逻辑

  1. 在Visual Studio 2005中打开My Documents文件夹下的\Microsoft Press\Visual CSharp Step by Step\Chapter 3\DailyRate子文件夹中的DailyRate项目。

  2. 在“解决方案资源管理器”中,双击Program.cs文件,以便在“代码和文本编辑器”窗口中显示程序。

  3. 在run方法主体中添加以下语句:

double dailyRate = readDouble("Enter your daily rate: ");
int noOfDays = readInt("Enter the number of days: ");
writeFee(calculateFee(dailyRate, noOfDays));

  应用程序启动时,run方法将由Main方法调用。

  刚才在run方法中添加的代码块会调用readDouble方法(马上就要开始写这个方法),以便让用户输入顾问的日费率。下一个语句调用readInt方法(也马上由我们来写)来获取天数。最后将调用writeFee方法(等待编写),以便在屏幕上显示结果。注意,传给writeFee的值是calculateFee方法(最后一个要写的方法)返回的值,该方法获取日费率和天数,并计算出要支付的总金额。

  注意 由于尚未写好readDouble,readInt,writeFee或者calculateFee方法,所以“智能感知”无法在输入上述代码的时候自动列出它们。另外,先不要试图生成程序,因为肯定会失败。

  使用“生成方法存根向导”来编写方法

  1. 在“代码和文本编辑器”窗口中,单击run方法中的readDouble方法调用。

  随后会在readDouble的第一个字母("r")下方显示一个小的下划线图标。将鼠标指针移至字母"r",会自动出现一个图标。将鼠标指针悬停在这个图标上方,会显示一条工具提示:“用于生成方法存根的选项(Shift + Alt + F10)”,并提供了一个下拉菜单。单击下拉菜单,就会看到一个选项:生成"DailyRate.Program"中的"ReadDouble"的方法存根。

  2. 单击“生成"DailyRate.Program"中的"ReadDouble"的方法存根”选项。

  随后,“生成方法存根向导”会检查对readDouble方法的调用,判断参数类型和返回值,并生成一个具有默认实现的方法,如下所示:

private double readDouble(string p)
{
throw new Exception("The method or operation is not implemented.");
}

  新方法是使用一个private限定符来创建的。方法主体目前只是掷出一个异常。我们将在下一步将主体替换成自己的语句。

  3. 从readDouble方法中删除throw new Exception(…);语句,将它替换成以下代码行:

Console.Write(p);
string line = Console.ReadLine();
return double.Parse(line);

  上述代码块会将变量p中的字符串输出到屏幕。该变量是调用方法是传递的字符串参数,其中包含提示用户输入日费率的一条消息。用户输入一个值,该值将通过ReadLine方法读入一个字符串中,并通过double.Parse方法转换成一个double值。结果将作为方法调用的返回值传回。

  注意 ReadLine方法是与WriteLine配套的一个方法,它从键盘读取用户直到按回车键之前的输入。用户输入的文本将作为返回值传回。

  4. 在run方法中,单击readInt方法调用,按照和前面一样的过程,为readInt方法生成一个方法存根。

  readInt方法将使用一个默认的实现来生成。

  提示 为了生成一个方法存根,还可以右击一个方法调用,并从弹出菜单中选择“生成方法存根”。

  5. 将readInt方法的主体替换成以下语句:

Console.Write(p);
string line = Console.ReadLine();
return int.Parse(line);

  这个代码块和readDouble方法的非常相似。惟一的区别是方法返回一个int值,所以要使用int.Parse方法将字符串转换成整数。

  6. 右击run方法中的calculateFee方法调用,选择“生成方法存根”。

  随后会生成calculateFee方法:

private object calculateFee(double dailyRate, int noOfDays)
{
throw new Exception("The method or operation is not implemented");
}

  注意,“生成方法存根向导”使用传入的实参名称来生成形参名称(当然,假如觉得不合适,完全可以更改形参名称)。更让人感兴趣的是方法的返回类型,目前是object。这表明“生成方法存根向导”无法根据当前的上下文来确定方法应该返回什么类型的值。object类型只是意味着一样“东西”,在方法中添加具体的代码时,应该把它修改成自己需要的类型。

  7. 修改calculateFee方法的定义,使它返回一个double值:

private double calculateFee (double dailyRate, int noOfDays)
{
throw new Exception("The method or operation is not implemented");
}

  8. 将calculateFee方法的主体替换成以下语句,它计算两个参数值的乘积来获得需要支付的金额,并返回结果。

return dailyRate * noOfDays;

  9. 右击run方法中的writeFee方法调用,选择“生成方法存根”。

  随后会生成writeFee方法。注意,“生成方法存根向导”根据calculateFee方法的定义判断出writeFee方法的参数应该是一个double参数。另外,方法调用没有使用一个返回值,所以方法的类型为void:

private void writeFee(double p)
{
...
}

  10. 在writeFee方法内部输入以下语句:

Console.WriteLine("The consultant's fee is: {0}", p * 1.1);

  注意 这个版本的WriteLine方法演示了如何利用一个简单的格式字符串。{0}是一个占位符;在求值的时候,它会被字符串之后的表达式(p * 1.1)的值替换掉。

  11. 选择“生成”|“生成解决方案”。
重构代码

  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调试器对它们进行了调试。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Peranan MySQL: Pangkalan Data dalam Aplikasi WebPeranan MySQL: Pangkalan Data dalam Aplikasi WebApr 17, 2025 am 12:23 AM

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

MySQL: Membina pangkalan data pertama andaMySQL: Membina pangkalan data pertama andaApr 17, 2025 am 12:22 AM

Langkah -langkah untuk membina pangkalan data MySQL termasuk: 1. Buat pangkalan data dan jadual, 2. Masukkan data, dan 3. Pertama, gunakan pernyataan CreatedataBase dan createtable untuk membuat pangkalan data dan jadual, kemudian gunakan pernyataan InsertInto untuk memasukkan data, dan akhirnya gunakan pernyataan PILIH untuk menanyakan data.

MySQL: Pendekatan mesra pemula untuk penyimpanan dataMySQL: Pendekatan mesra pemula untuk penyimpanan dataApr 17, 2025 am 12:21 AM

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.

Adakah MySQL Beginner-mesra? Menilai lengkung pembelajaranAdakah MySQL Beginner-mesra? Menilai lengkung pembelajaranApr 17, 2025 am 12:19 AM

MySQL sesuai untuk pemula kerana: 1) mudah dipasang dan mengkonfigurasi, 2) sumber pembelajaran yang kaya, 3) sintaks SQL intuitif, 4) sokongan alat yang kuat. Walau bagaimanapun, pemula perlu mengatasi cabaran seperti reka bentuk pangkalan data, pengoptimuman pertanyaan, pengurusan keselamatan, dan sandaran data.

Adakah SQL adalah bahasa pengaturcaraan? Menjelaskan istilahAdakah SQL adalah bahasa pengaturcaraan? Menjelaskan istilahApr 17, 2025 am 12:17 AM

Ya, sqlisaprogramminglanguagespecializedfordatamanagement.1) it'sdeclarative, focusingonwhathattoachieverthanhan.2) sqlisesessentialforquerying, memasukkan, mengemas kini, dandeleletingdatainrelationaldatabases.3)

Terangkan sifat asid (atom, konsistensi, pengasingan, ketahanan).Terangkan sifat asid (atom, konsistensi, pengasingan, ketahanan).Apr 16, 2025 am 12:20 AM

Atribut asid termasuk atom, konsistensi, pengasingan dan ketahanan, dan merupakan asas reka bentuk pangkalan data. 1. Atomicity memastikan bahawa urus niaga sama ada berjaya atau gagal sepenuhnya. 2. Konsistensi memastikan pangkalan data tetap konsisten sebelum dan selepas transaksi. 3. Pengasingan memastikan bahawa urus niaga tidak mengganggu satu sama lain. 4. Kegigihan memastikan data disimpan secara kekal selepas penyerahan transaksi.

MySQL: Sistem Pengurusan Pangkalan Data vs Bahasa PengaturcaraanMySQL: Sistem Pengurusan Pangkalan Data vs Bahasa PengaturcaraanApr 16, 2025 am 12:19 AM

MySQL bukan sahaja sistem pengurusan pangkalan data (DBMS) tetapi juga berkait rapat dengan bahasa pengaturcaraan. 1) Sebagai DBMS, MySQL digunakan untuk menyimpan, menyusun dan mengambil data, dan mengoptimumkan indeks dapat meningkatkan prestasi pertanyaan. 2) Menggabungkan SQL dengan bahasa pengaturcaraan, tertanam dalam Python, menggunakan alat ORM seperti SQLalChemy dapat memudahkan operasi. 3) Pengoptimuman prestasi termasuk pengindeksan, pertanyaan, caching, perpustakaan dan bahagian meja dan pengurusan transaksi.

MySQL: Menguruskan data dengan arahan SQLMySQL: Menguruskan data dengan arahan SQLApr 16, 2025 am 12:19 AM

MySQL menggunakan arahan SQL untuk menguruskan data. 1. Perintah asas termasuk pilih, masukkan, kemas kini dan padam. 2. Penggunaan lanjutan melibatkan fungsi gabungan, subquery dan agregat. 3. Kesilapan umum termasuk isu sintaks, logik dan prestasi. 4. Petua Pengoptimuman termasuk menggunakan indeks, mengelakkan Pilih* dan menggunakan had.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual