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

相关推荐
远望清一色14 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
封步宇AIGC21 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧22 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices26 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷39 分钟前
中文分词模拟器
开发语言·python·算法
wyh要好好学习42 分钟前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech43 分钟前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#
qing_0406031 小时前
C++——多态
开发语言·c++·多态
孙同学_1 小时前
【C++】—掌握STL vector 类:“Vector简介:动态数组的高效应用”
开发语言·c++
froginwe111 小时前
XML 编辑器:功能、选择与使用技巧
开发语言