多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

freeCodeCamp C 方法挑战通关指南:Guided Project “Plan a Petting Zoo Visit”与可选参数(Optional Parameters)深度解析

freeCodeCamp C 方法挑战通关指南:Guided Project “Plan a Petting Zoo Visit”与可选参数(Optional Parameters)深度解析 freeCodeCamp C# 方法挑战通关指南Guided Project “Plan a Petting Zoo Visit”与可选参数(Optional Parameters)深度解析【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp本指南围绕 freeCodeCamp 课程中“Create Methods in C# Console Applications”C# 控制台应用方法创建系列的验证型关卡——Guided Project - Plan a Petting Zoo Visit 展开完整还原其在 Microsoft Learn 平台上的完成流程、奖杯(Trophy)与认证考试关联关系并以该关的校验题目为主线深入讲解 C# 方法中可选参数optional parameters、命名实参named arguments的定义语法、适用场景及常见误区。读完本文你既能顺利通过该关的答题验证也能系统掌握“可选参数到底解决什么问题”这一核心考点。关卡定位课程中的验证性挑战这一挑战文件位于仓库的 C# 学习块block目录中curriculum/challenges/english/blocks/create-methods-in-c-sharp-console-applications/647e225e8acb466c97ccbef0.md从该文件 frontmatter 可以看到它的元数据--- id: 647e225e8acb466c97ccbef0 title: Guided Project - Plan a Petting Zoo Visit challengeType: 19 dashedName: guided-project-plan-a-petting-zoo-visit ---其中challengeType: 19并非随意取值。在 packages/shared/src/config/challenge-types.ts 中类型19被明确定义为multipleChoice单选题/验证题而18被定义为msTrophyMicrosoft 奖杯验证题。也就是说本关在技术上是一个带标准答案的多选题验证节点用于确认学习者确实在外部平台上完成了对应的动手实践任务。而它的兄弟文件 647f877f07d29547b3bee1be.mdTrophy - Create Methods in C# Console Applications使用challengeType: 18承担最终的奖杯核验职责。整个块内共包含 6 个相互关联的关卡文件文件标题TitlechallengeType647e22338acb466c97ccbeed.mdChallenge Project - Create a Mini-Game19647e223c8acb466c97ccbeee.mdCreate C# Methods that Return Values19647e224b8acb466c97ccbeef.mdCreate C# Methods with Parameters19647e225e8acb466c97ccbef0.mdGuided Project - Plan a Petting Zoo Visit19647e226a8acb466c97ccbef1.mdWrite Your First C# Method19647f877f07d29547b3bee1be.mdTrophy - Create Methods in C# Console Applications18可以看出本关是“方法与参数”主题下承上启下的综合实践关卡前面先学“编写第一个方法”“方法参数”“返回值”再通过“Petting Zoo Visit”引导式项目把方法、参数与返回值综合起来使用最后以“Mini-Game”挑战项目收尾并领取奖杯。挑战的完整完成流程该文档明确说明了它属于“partially completed on the Microsoft Learn platform”在 Microsoft Learn 平台上部分完成的学习模式即动手编码环节在微软官方训练平台完成而 freeCodeCamp 负责出题验证学习成果。按照--description--的要求通关需要严格执行以下两步前往 Microsoft Learn 完成全部任务打开训练模块 “Guided Project - Plan a Petting Zoo Visit”完成该模块中的全部任务all the tasks。这一步是强制性的required只有完成它才能在 Microsoft Learn 上获得 “Create Methods in C# Console Applications” 奖杯trophy并取得参加对应认证考试的资格qualify for the certification exam。回到 freeCodeCamp 正确作答完成上述模块后返回本挑战页面正确回答下面的单选验证题即可通关。--assignment--段与描述段保持一致的指令结构唯一差别是文字更精炼“Complete the Plan a Petting Zoo Visit guided project on Microsoft Learn. Then, answer the question below.”在 Microsoft Learn 上完成该引导式项目然后回答下方问题。需要特别提醒的是freeCodeCamp 只校验你是否完成了外部实践并通过了选择题并不会在本仓库中运行任何动物乐园相关代码。仓库与 Microsoft Learn 之间通过msTrophyId: learn.wwl.get-started-c-sharp-part-5.trophy见 Trophy 关卡的 frontmatter这类标识完成账号与学习成果的关联。因此在答题前请务必确认自己在 Microsoft Learn 上确实把模块里每一步编码任务都做完了否则即使答对题目后续的奖杯验证环节647f877f07d29547b3bee1be.md也会因为没有可核验的奖杯而失败。验证题目可选参数的作用到底是什么本关--questions--段给出了唯一的验证题目--text--What is the purpose of defining an optional parameter in a method?在方法中定义可选参数的目的是什么三个候选答案--answers--分别是To cause a method to perform a different task.让方法执行一个不同的任务。To overload a method.对方法进行重载。To simplify the required parameters when a parameter isnt significant to the result.当某个参数对结果影响不大时简化必选参数。文件末尾的--video-solution--字段值为3即正确答案是选项 3。这道题之所以是整门 C# 方法与参数课程的关键验收题是因为它考察的是学习者对可选参数“设计动机”的理解——不是语法背诵而是能否说清“为什么语言要提供这个特性”。为什么正确答案是选项 3可选参数的核心用途是在不改变方法签名结构的前提下让调用方可以省略那些“大多数情况下都有合理默认值、不影响主流程结果”的参数。它在语法层面对应的是“参数默认值”语义层面对应的是“降低调用门槛”。官方课程同块中方法参数一关647e224b8acb466c97ccbeef.md给出的示例签名正体现了这一设计void Print(string name, string number , bool member false)在这条签名中number与member都声明了默认值因此调用方只传name也能调用Print(Tony); // 合法number、memberfalse 被自动补齐 Print(Tony, member: true); // 合法跳过 number用命名实参指定 member这里的member参数“对主流程结果不构成决定性影响”——大多数顾客不是会员默认false完全合理。可选参数让Print方法面对“仅知道姓名”“知道姓名和号码”“姓名号码会员状态”三种调用场景都游刃有余而不必为每种组合各写一个重载。两个干扰项为什么错误选项 1让方法执行不同任务改变任务本质是“通过不同参数值走不同分支”甚至“重载不同实现”的职责可选参数只是为缺失的参数填充默认值它不会改变方法自身的语义目标只是影响行为细节例如默认显示空号码还是真实号码。用选项 1 描述可选参数夸大了它的能力边界。选项 2对方法进行重载这是初学者最容易混淆的点。重载overload是“同一方法名下定义多个不同签名由编译器在调用点按实参匹配”属于编译期多态机制可选参数则是“同一个签名内为尾部参数提供默认值”。两者经常互相替代用可选参数减少重载数量但可选参数本身并不是重载——本题问的是“定义可选参数的目的”而它服务的目的正是减少必填参数带来的调用负担对应选项 3。可选参数语法与使用规则结合课程块的方法参数关卡与本题这里给出 C# 可选参数需要掌握的完整规则1. 声明语法默认值即可选标记void Print(string name, string number , bool member false) // └── 必选required └── 可选 └── 可选声明可选参数就是在参数名后以赋予编译期常量。可选参数必须放在所有必选参数之后否则编译器报错——这保证了“省略参数只能是尾部的连续省略”。2. 调用语法位置实参 命名实参位置实参positional arguments按声明顺序传值命名实参named arguments用参数名: 值形式跳过中间可选参数如Print(Tony, member: true)这是本关前序关卡明确考察的正确用法注意一旦使用命名实参其后未命名实参必须按“位置实参必须位于命名实参之前”的约束排布C# 7.2 起支持“位置实参跟在命名实参后”的严格顺序规则前提是命名实参保持声明顺序。3. 可选参数的默认值要求默认值必须是编译期可确定的常量字面量、const字段、枚举成员等不能依赖运行时变量。例如const int maxRetry 3; void Retry(int times maxRetry) { } // 合法引用 const int GetCount() 10; void Bad(int times GetCount()) { } // 非法方法调用不是编译期常量4. 可选参数与重载的关系同一个需求既可以用可选参数实现也可以用一组重载实现。课程中学到的两种写法的等价关系有助于理解选项 3// 写法 A可选参数 void Print(string name, string number , bool member false) { } // 写法 B等价的手写重载 void Print(string name) Print(name, , false); void Print(string name, string number) Print(name, number, false); void Print(string name, string number, bool member) { }可选参数的优势是签名集中、维护点少代价是调用方式被编译器静态补齐无法在运行时区分“调用者没传”与“调用者显式传了默认值”。当确实需要区分这两种情况时NullableT配合默认值null是更常见的进阶方案。5. 常见陷阱默认值缺失导致“一次改动四处开花”修改了默认值会影响所有未显式传参的调用点行为版本演化时把“必选”改成“可选”会引入二义性重载ambiguous call把“可选”改成“必选”会破坏既有调用方用ref/out/params与可选参数组合时params数组必须位于最后且可选参数之前不允许出现ref/out需借助重载规避。与同块其他关卡的技能衔接“Plan a Petting Zoo Visit”作为一个引导式项目其动手内容需要综合运用同块前序关卡所学的全部技能647e226a8acb466c97ccbef1.mdWrite Your First C# Method先掌握方法的声明语法标准形式为void DisplayNumbers() { }——返回类型 方法名 参数列表 方法体三者缺一不可。这是后续一切方法实践的地基647e223c8acb466c97ccbeee.mdCreate C# Methods that Return Values掌握返回值的正确写法例如返回字符串必须用return ;而return a;char与return 5;int都会因类型不符而无法通过编译。在实现 Petting Zoo 的项目里规划动物分组、生成访问名单等方法都需要返回string[]之类的数据647e22338acb466c97ccbeed.mdChallenge Project - Create a Mini-Game本关之后紧接的独立挑战项目。前序引导式项目会“带着你一步步实现”而这里的挑战项目要求独立完成——这也是 C# Foundational 系列“引导项目 → 挑战项目 → 奖杯”的标准节奏。例如该关考察的签名设计string GetValueAtIndex(string[] array, int index)说明返回数组中的字符串元素返回值类型必须与元素类型一致bool或缩略参数列表都不是好选择。也就是说通关 “Plan a Petting Zoo Visit” 的意义不仅是拿到一个奖杯更是为紧接着的 Mini-Game 挑战项目做好实战演练。通关核对清单为避免“答对题却拿不到奖杯”的尴尬情况按本关描述与 Trophy 关卡要求整理如下在 Microsoft Learn 上打开 “Guided Project - Plan a Petting Zoo Visit” 模块逐任务完成全部编码步骤不跳过任何 “Check your work” 验证环节确认 Microsoft Learn 的成就页achievements中已出现 “Create Methods in C# Console Applications” 奖杯回到本 freeCodeCamp 挑战页回答验证题可选参数的目的 “当某参数对结果不显著时简化必填参数”选项 3继续完成后续的 Challenge Project - Create a Mini-Game 验证题在最终 Trophy 关卡647f877f07d29547b3bee1be.md中将 Microsoft 用户名与 freeCodeCamp 账号关联点击 “Verify Trophy” 完成奖杯核验从而取得认证考试资格。仓库中的相关实现与结构依据如果想要在源码层面进一步理解本关的工作原理可以参考以下文件本挑战 Markdown 源文件challengeType: 19、--description--/--assignment--/--questions--/--answers--/--video-solution--的分段格式即 freeCodeCamp 验证题的标准结构challenge 类型定义常量multipleChoice 19、msTrophy 18的映射关系以及hasNoSolution对这两类关卡“无传统解法代码”的判定逻辑解释了为何验证题不需要提交代码而只需选择答案挑战结构校验 schema该文件用于校验每个 challenge Markdown 是否符合仓库规定的结构约束如问题与答案块的组织是保证上面分段格式能正确渲染的底层依据同块 Trophy 文件 647f877f07d29547b3bee1be.mdmsTrophyId字段把本块学习成果与 Microsoft Learn 成就体系绑定。综上本关的实质是“外部动手 站内验证”的双平台关卡。把握住可选参数“为非关键参数提供默认值、从而简化必选参数集合”这一核心语义你就能稳过验证题并在后续的 Mini-Game 挑战项目与认证考试中举一反三。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表