掌握C#: 从基础到精通 - 中级实战练习集

文章目录

    • 异常处理
      • 尝试-捕获结构
    • 文件 I/O 练习
      • 追加而不覆盖
      • 处理目录
    • LINQ 查询练习
      • 筛选集合中的对象
      • 排序复杂对象
    • 类与对象练习
      • 继承与多态性

你是否已经掌握了C#的基础知识,正在寻找更多挑战来提升你的能力?那么,这篇文章就是为你准备的。我们精心挑选并设计了10个中级水平的C#练习题,涵盖了异常处理、文件操作、LINQ查询以及类与对象等核心概念。通过完成这些任务,你不仅可以巩固所学知识,还能够进一步提高解决实际问题的技能。现在开始吧!

异常处理

尝试-捕获结构

编写一个函数 DivideNumbers 接受两个整数参数并返回它们的除法结果。如果除数为零,则在适当区域捕获 DivideByZeroException 并输出友好信息。

public double DivideNumbers(int num1, int num2)
{try{return (double)num1 / num2;}catch (DivideByZeroException){Console.WriteLine("Error: Cannot divide by zero.");return 0; // 返回默认值或特定错误代码}
}

注释: 注意异常处理使得我们能够优雅地处理运行时发生的错误,并保证程序不会在遇到预期内错误时崩溃。

文件 I/O 练习

追加而不覆盖

将文本追加到一个文件中 myfile.txt 而不覆盖它现有的内容。

答案:

string path = "myfile.txt";
string textToAppend = "Hello, World!";File.AppendAllText(path, textToAppend);

注释: AppendAllText 方法会自动向文件末尾添加字符串,并且如果目标文件不存在,则创建它。

处理目录

创建一个名为“TestFolder”的目录,并检查其是否成功创建。

答案:

string folderPath = @"TestFolder";// 创建目录
Directory.CreateDirectory(folderPath);// 检查目录是否存在
if (Directory.Exists(folderPath))
{Console.WriteLine("Folder created successfully.");
}
else
{Console.WriteLine("Folder creation failed.");
}

LINQ 查询练习

筛选集合中的对象

假设存在一个 List 列表,使用LINQ查询出所有分数超过90分的学生列表。

答案:

public class Student
{public string Name { get; set; }public int Score { get; set; }
}var students = new List<Student>
{new Student { Name = "Alice", Score = 95 },new Student { Name = "Bob", Score = 89 },// 更多学生...
};var topStudents = students.Where(s => s.Score > 90).ToList();foreach (var student in topStudents)
{Console.WriteLine($"{student.Name} has a score of {student.Score}");
}

排序复杂对象

给定一个员工列表 List,按员工年龄进行升序排序-若年龄相同,则根据姓名降序排序。

答案:

public class Employee 
{ public string Name { get; set; } public int Age { get; set; } 
}List<Employee> employees = GetEmployees(); // 假定此函数返回员工列表.IEnumerable<Employee> sortedEmployees =employees.OrderBy(e => e.Age).ThenByDescending(e => e.Name);foreach(Employee emp in sortedEmployees)
{Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}");
}

类与对象练习

继承与多态性

创建抽象类Shape和其子类Circle。Circle类需要重写方法计算面积。

答案:

public abstract class Shape 
{ public abstract double CalculateArea(); 
}public class Circle : Shape 
{ public double Radius { get; private set; }public Circle(double radius) {Radius = radius;}public override double CalculateArea() {return Math.PI * Radius * Radius;}
}
// 使用:
Circle circle = new Circle(5); 
Console.WriteLine($"The area of the circle is: {circle.CalculateArea()}");

希望以上示例能够帮助您在C#编程之路上更进一步。每个人都有独特的学习方式:无论是通过书籍阅读、观看教程视频、还是直接编码实践,最关键的是保持好奇心,并享受探索未知领域所带来的成就感。祝您愉快地在解决问题和构建解决方案过程中发展出自己强大的技术栈!

觉得本篇写得还不错,可以点赞,评论,关注,主页有C#教程专栏欢迎订阅!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/545332.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 -- 回溯算法

文章目录 回溯算法理论什么是回溯法回溯法的效率回溯法解决的问题理解回溯法回溯法模板 组合问题I描述题解优化 组合总和III描述题解 电话号码的字母组合描述题解 组合总和描述题解 组合总和II描述题解 分割回文串描述题解 复原IP地址描述题解 子集描述题解 子集II描述题解 递增…

暄桐林曦老师的三个“知行”心得,帮你少走弯路

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。    “知行合一”四个…

20双体系Java学习之数组的toString类

Arrays.toString ★小贴士 数组内容字符串表示形式由数组的元素列表组成&#xff0c;括在方括号&#xff08;"[]"&#xff09;中。相邻元素用字符 ", "&#xff08;逗号加空格&#xff09;分隔。 使用toString()方法可方便地输出数组的内容&#xff0c;避免…

【计算机基础系列】位运算

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【解决】Github Pages搭建的网页访问加载缓慢

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 文章目录 一、CDN技术简介二、基于Cloudflare平台使用CDN服务&#xff08;一&#xff09;添加网站&#xff08;二&#xff09…

@RestController和@Controller的区别

Retention注解的生命周期 Target表示注解的使用范围 Type&#xff1a;类型 1、RestControllerControllerResponseBody Controller:告诉Spring帮我们管理哪些程序 ResponseBody&#xff1a;返回数据&#xff0c;即可以修饰类&#xff0c;又可以修饰方法&#xff1a; &…

【TB作品】MSP430,波形发生器,单片机,Proteus仿真

文章目录 题目效果梯形波100个点产生方法锯齿波100个点产生方法c代码和proteus仿真 题目 114 波形发生器的制作 设计要求 设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。设置5个开关K1~K5(从 上到下),分别对应正弦波、方波、三角波、梯形波、锯齿波,按一下…

Oracle19c静默部署

Oracle19c静默部署文档 下载地址 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_free 一、系统基础配置 1、创建用户和用户组 # 创建oinstall和dba用户组 groupadd oinstall groupadd dba# 创建Oracle用户 useradd -g oinstall…

解决谷歌浏览器最新chrome94版本CORS跨域问题

项目场景&#xff1a; 谷歌浏览器升级到chrome94版本出现CORS跨域问题 问题描述 解决谷歌浏览器最新chrome94版本CORS跨域问题。 CORS跨域问题&#xff1a; 升级谷歌浏览器最新chrome94版本后&#xff0c;提示Access to XMLHttpRequest at ‘http://localhost:xxxx/api’ fro…

Linux基础开发工具之yum与vim

1. Linux软件包管理器——yum 1.1 什么是软件包&#xff1f; 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, …

antd5 虚拟列表原理(rc-virtual-list)

github:https://github.com/react-component/virtual-list rc-virtual-list 版本 3.11.4(2024-02-01) 版本&#xff1a;virtual-list-3.11.4 Development npm install npm start open http://localhost:8000/List 组件接收 Props PropDescriptionTypeDefaultchildrenRender …

基于springboot创建mybatis

第一步&#xff1a;创建项目 第二步&#xff1a;添加依赖 第三步&#xff1a;连接MySQL 第四步&#xff1a;添加MySQL配置 #驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.urljdbc:mysql://localhost:3306/myb…