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

文章目录

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

异常处理

尝试-捕获结构

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

c 复制代码
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 而不覆盖它现有的内容。

答案:

c 复制代码
string path = "myfile.txt";
string textToAppend = "Hello, World!";

File.AppendAllText(path, textToAppend);

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

处理目录

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

答案:

c 复制代码
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分的学生列表。

答案:

c 复制代码
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,按员工年龄进行升序排序-若年龄相同,则根据姓名降序排序。

答案:

c 复制代码
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类需要重写方法计算面积。

答案:

c 复制代码
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#教程专栏欢迎订阅!

相关推荐
海螺姑娘的小魏6 分钟前
Effective C++ 条款 16:成对使用 `new` 和 `delete` 时要采取相同形式
开发语言·c++
neter.asia25 分钟前
C# 窗体应用程序嵌套web网页,基于谷歌浏览器内核(含源码)
开发语言·c#
Stara051125 分钟前
基于YOLOV5+Flask安全帽RTSP视频流实时目标检测
python·yolo·目标检测·flask
m0_7482323927 分钟前
python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库
数据库·mysql·flask
重整旗鼓~29 分钟前
2.flask中使用装饰器统一验证用户登录
后端·python·flask
杜小白也想的美36 分钟前
FlaskAPI-路径参数、查询参数
python·fastapi
EterNity_TiMe_38 分钟前
【论文复现】农作物病害分类(Web端实现)
前端·人工智能·python·机器学习·分类·数据挖掘
2301_8091774742 分钟前
sqoop,flume草稿
开发语言
香橙薄荷心1 小时前
学一学前沿开发语言之Python
人工智能·python
潜意识起点1 小时前
Java数组:静态初始化与动态初始化详解
java·开发语言·python