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


    你是否已经掌握了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; // 返回默认值或特定错误代码
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    文件 I/O 练习

    追加而不覆盖

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

    答案:

    string path = "myfile.txt";
    string textToAppend = "Hello, World!";
    
    File.AppendAllText(path, textToAppend);
    
    • 1
    • 2
    • 3
    • 4

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

    处理目录

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

    答案:

    string folderPath = @"TestFolder";
    
    // 创建目录
    Directory.CreateDirectory(folderPath);
    
    // 检查目录是否存在
    if (Directory.Exists(folderPath))
    {
        Console.WriteLine("Folder created successfully.");
    }
    else
    {
        Console.WriteLine("Folder creation failed.");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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}");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    排序复杂对象

    给定一个员工列表 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}");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    类与对象练习

    继承与多态性

    创建抽象类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()}");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

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

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

    在这里插入图片描述

  • 相关阅读:
    二:动手实操SpringBoot-使用Spring Initializr创建项目
    首发 自媒体博客最新版Spimes主题 X6.0开心免授权
    phpstudy安装imagick扩展
    C++ 好玩的约瑟夫环(单链表版本)
    Excel中的subtotal函数
    java poi获取日期
    软件测试/测试开发丨利用ChatGPT自动生成测试用例思维导图
    【算法专题--链表】反转链表II--高频面试题(图文详解,小白一看就会!!!)
    java接收前端easyui datagrid传递的数组参数
    各种注意力机制,Attention、MLP、ReP等系列的PyTorch实现,含核心代码
  • 原文地址:https://blog.csdn.net/2401_82410658/article/details/136765899