当前位置: 首页 > article >正文

掌握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#教程专栏欢迎订阅!

在这里插入图片描述

原文地址:https://blog.csdn.net/2401_82410658/article/details/136765899
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/271619.html

相关文章:

  • mac启动skywalking报错
  • 亚马逊云科技 Lambda 运行selenium
  • 基于Springboot+Redis+mysql实现的闲置二手交易网站管理系统
  • layui table列表重载后保持进度条位置不变
  • npm下载慢换国内镜像地址
  • C++ 虚函数表
  • STM32 Simulink 自动代码生成电机控制——霍尔有感六步方波仿真到开发板运行
  • 项目需求:实现 PDF 添加水印,这五种方案送上!
  • 关于分布式微服务数据源加密配置以及取巧方案(含自定义加密配置)
  • ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件)
  • linux最佳入门(笔记)
  • 【TB作品】MSP430,单片机,Proteus仿真,单片机通信,串口通信
  • 计算机设计大赛 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正
  • 基于MATLAB的OFDM系统实现
  • 卫生间设计黄金法则!贴心小技巧,让你的卫生间瞬间变宽敞!福州中宅装饰,福州装修
  • Session,Cookie,Token详解,初步认识web程序的安全性
  • HTTP和HTTPS的区别,HTTPS加密原理是?
  • 智能合约概述
  • 游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)
  • Maya自定义工具架