C#编写方法实例

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

  开发应用程序逻辑

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

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/458202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 02:22:08
下一篇 2025年11月8日 02:25:01

相关推荐

  • win8打开程序提示0xc000007b怎么办_win8程序0xc000007b错误解决方法

    首先重新安装Visual C++ Redistributable运行库,包括x86和x64版本;其次修复DirectX组件,更新至最新运行时;然后运行SFC扫描修复系统文件;最后手动注册vcruntime140.dll等关键DLL文件,每步完成后重启电脑测试程序。 如果您在Windows 8系统中尝…

    2025年12月5日
    000
  • 应用程序发生异常0xc0000417怎么解决 5种解决方案揭晓

    方法一:重启系统并清理后台占用程序 有时候,出现“0xc0000417”错误只是因为系统临时资源冲突,尤其是在同时运行多个程序或后台任务过多的情况下。 1、先保存好当前的工作内容,然后重启计算机。 2、使用快捷键 Ctrl + Shift + Esc 调出任务管理器,查看正在运行的进程,关闭不必要的…

    2025年12月5日 电脑教程
    000
  • 电脑的dll文件丢失怎么恢复 一文教你快速恢复

    在使用计算机的过程中,不少用户可能会碰到类似的问题:启动某个程序或游戏时,系统弹出提示信息,例如“xxx.dll文件缺失”或“程序无法运行”。这类问题通常是由dll(动态链接库)文件被误删、损坏或丢失所引起的。本文将为你整理一套完整的应对策略,帮助你迅速找回丢失的dll文件,恢复正常系统运行。 一、…

    2025年12月5日 电脑教程
    000
  • 安装office2010在安装过程出错 office2010安装出错解决办法

    一些用户在安装 office 2010 时,常常会遇到各种问题:比如安装进行到一半突然停止,提示某些文件无法复制,甚至直接卡在安装界面无响应。这些问题大多与系统环境、运行库缺失或旧版残留有关。接下来我们将详细分析常见原因,并提供简单有效的解决方法,即使是电脑新手也能轻松应对。 一、问题原因分析 1、…

    2025年12月5日 电脑教程
    000
  • 电脑提示“应用程序中发生了未经处理的异常”的4种解决方案

    有些朋友在启动或使用某些软件时,可能会突然遇到一个弹窗提示:“应用程序中发生了未经处理的异常”,并附带一串数字和错误代码,看起来令人不知所措。其实这类问题并不少见,多数情况下是由于系统依赖组件缺失或环境异常导致的。以下是几种常见的原因及对应的解决办法,帮助你快速排查并修复问题。 一、常见原因分析 在…

    2025年12月5日 电脑教程
    000
  • java中的native关键字作用 native本地方法的2个实现要点

    #%#$#%@%@%$#%$#%#%#$%@_93f725a07423fe1c++889f448b33d21f46 中的 native 关键字用于调用非 java 语言实现的函数,1. 允许声明无实现的方法,2. 要求使用 c/c++ 和 jni 实现并链接,3. 提供访问底层资源和提升性能的能力。…

    2025年12月5日 java
    000
  • 为什么应避免在构造函数中抛出异常?对象初始化失败时如何处理资源?

    构造函数抛出异常会导致对象未完全构造,引发资源泄漏等问题。1. 异常会使对象处于不完整状态,已构造的成员变量析构可能无法释放全部资源;2. 文件等外部资源若在构造函数中打开,失败时难以清理;3. 使用raii技术可确保资源自动释放,如将资源封装到类中,在析构函数中释放;4. 避免构造函数复杂化,可采…

    2025年12月5日 java
    000
  • linux下gdb调试方法与技巧整理「建议收藏」

    大家好,很高兴再次与大家见面,我是你们的老朋友全栈君。 目录一、gdb简介二、gdb使用流程1、启动gdb2、查看源码3、运行程序4、设置断点5、单步执行6、查看变量7、退出gdb三、gdb基本使用命令1、运行命令2、设置断点3、查看源码4、打印表达式5、查看运行信息6、分割窗口7、cgdb强大工具…

    2025年12月5日
    000
  • composer如何处理”The requested PHP extension is missing”错误

    答案是缺少PHP扩展导致Composer报错,需确认CLI环境缺失的扩展并安装。首先通过php -m检查CLI加载的模块,根据错误提示在对应系统中安装扩展,如Linux用apt或yum,macOS用Homebrew,Windows修改php.ini。差异源于CLI与Web环境使用不同PHP配置,可通…

    2025年12月5日
    000
  • 玩游戏提示“api-ms-win-shcore-scaling-l1-1-1.dll”缺失的解决方法

    许多玩家在启动游戏时可能会遇到弹窗提示“api-ms-win-shcore-scaling-l1-1-1.dll 缺失”,导致游戏无法正常运行。这个问题通常与系统关键文件丢失或 windows 高分屏缩放功能的兼容性有关。别担心,下面为你整理了几种简单有效的解决方法,帮你快速恢复游戏体验! 方法一:…

    2025年12月5日 电脑教程
    500
  • java中main的返回类型 main方法为什么是void类型

    java中的m#%#$#%@%@%$#%$#%#%#$%@_4921c++0e2d1f6005abe1f9ec2e2041909n方法是void类型,因为它不需要返回值给操作系统。1)历史和兼容性:借鉴c和c++的设计。2)执行环境:jvm不依赖main方法的返回值,使用system.exit()设…

    2025年12月5日
    000
  • composer如何更新到最新版本

    最直接更新Composer的方式是运行composer self-update命令,它会自动下载最新稳定版并替换旧文件;若需特定版本可加–snapshot、–1、–2等参数;遇到权限问题可用sudo或手动下载覆盖,网络问题可重试或检查代理;更新前需确认PHP版本兼…

    2025年12月5日
    000
  • 目录怎样遍历?递归扫描文件方法

    递归是遍历目录的首选方法,因为它能自然映射文件系统的树形结构,代码简洁且可读性强;1. 递归通过函数自身调用实现层级深入,遇到文件处理,遇到目录继续递归;2. 优势包括逻辑清晰、无需预知目录深度、契合嵌套结构;3. 常见问题如权限不足、符号链接需额外处理,可通过异常捕获和判断跳过解决;4. 替代方案…

    2025年12月5日 后端开发
    000
  • 电脑显示无法找到组件怎么办 分享5个修复方法

    你是否曾碰到过这样的情况:启动某个应用程序或游戏时,系统突然跳出提示框,显示“找不到组件”、“某某dll文件丢失”、“应用程序无法运行”等错误信息?这类问题不仅干扰正常使用,还常常让用户感到无从下手。本文将为你梳理常见的故障原因,并提供实用的解决方法,助你高效应对这类困扰。 一、什么是“组件缺失”类…

    2025年12月5日 电脑教程
    000
  • ucrtbase.dll运行库错误 原因及解决指南

    一、ucrtbase.dll是什么? ucrtbase.dll 是微软通用C运行时库(Universal C Runtime,简称UCRT)中的关键动态链接库文件,负责为基于C语言开发的程序提供基础运行支持。自Windows 10起,该运行库被集成进系统核心组件中,同时也包含在Visual C++ …

    2025年12月5日 电脑教程
    000
  • Inno Setup检测软件依赖环境是否安装

    从 visual studio .net 到 visual studio 2013,每个主版本的 c++++ 编译器和工具都包含一个新的独立版本的 microsoft c 运行时 (crt) 库。这些独立的 crt 版本在不同程度上彼此不兼容。例如,visual studio 2012 使用的 cr…

    2025年12月4日
    000
  • 如何在PHP类中使用构造函数的详细教程?

    构造函数是php中对象创建时自动调用的特殊方法,用于初始化对象属性或执行必要设置。1.使用__construct()魔术方法定义,接收参数并赋值给对象属性。2.php不支持传统重载,但可通过默认参数模拟实现。3.继承时子类需显式调用parent::__construct()以执行父类初始化。4.构造…

    2025年12月4日 后端开发
    200
  • CSS white-space 属性与DOM元素空白符处理深度解析

    本文深入探讨了在DOM操作中,静态HTML元素与动态生成元素之间因CSS white-space 属性和HTML结构缩进导致的空白符显示不一致问题。核心在于 white-space: break-spaces; 属性会保留HTML源代码中的空白符和换行,而JavaScript动态创建元素时通常不产生…

    2025年12月4日
    000
  • XNA Framework 4.0 安装失败?一键修复方法来了

    如果你在安装游戏或一些较老的程序时收到“microsoft xna framework redistributable 4.0 安装失败”的提示,先别着急。这类问题通常由系统缺少运行库、权限不足或注册表错误引起。接下来,我们将逐步分析原因,并提供几种有效的解决方法。 一、常见安装失败原因分析 1、系…

    2025年12月4日 电脑教程
    000
  • .dll没有被指定在windows上运行怎么办 五种有效解决方法

    在windows操作系统中运行部分应用程序时,用户可能会看到这样的错误提示:“由于某个 .dll 文件未在 windows 上注册或已损坏,该程序无法启动。”这类问题通常出现在启动游戏、开发环境或图像处理软件时,根本原因在于系统无法正确识别或加载所需的动态链接库(.dll)文件。以下是几种高效且实用…

    2025年12月4日 电脑教程
    000

发表回复

登录后才能评论
关注微信