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

C#学习3

  1. 面向对象编程进阶
    继承
    csharp
    // 基类
    public class Animal
    {
    public string Name

    public virtual void Speak()
    {
    Console.WriteLine("动物发出声音");
    }
    }

// 派生类
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("汪汪!");
}
}

// 使用
Dog dog = new Dog { Name = "Buddy" };
dog.Speak(); // 输出:汪汪!
抽象类和接口
csharp
// 抽象类
public abstract class Shape
{
public abstract double CalculateArea();
}

// 接口
public interface IDrawable
{
void Draw();
}

// 实现
public class Circle : Shape, IDrawable
{
public double Radius { get; set; }

public override double CalculateArea()
{return Math.PI * Radius * Radius;
}public void Draw()
{Console.WriteLine("绘制圆形");
}

}
12. 属性和访问器
csharp
public class Person
{
private string name;
private int age;

// 自动属性
public string Email { get; set; }// 完整属性
public string Name
{get { return name; }set { if (!string.IsNullOrEmpty(value))name = value; }
}// 只读属性
public int BirthYear { get; private set; }// 计算属性
public bool IsAdult => age >= 18;

}
13. 委托和事件
csharp
// 委托定义
public delegate void MessageHandler(string message);

public class Publisher
{
// 事件定义
public event MessageHandler OnMessageSent;

public void SendMessage(string message)
{Console.WriteLine($"发送消息: {message}");OnMessageSent?.Invoke(message); // 触发事件
}

}

public class Subscriber
{
public void HandleMessage(string message)
{
Console.WriteLine($"收到消息: {message}");
}
}

// 使用
var publisher = new Publisher();
var subscriber = new Subscriber();

publisher.OnMessageSent += subscriber.HandleMessage;
publisher.SendMessage("Hello World!");
14. LINQ (语言集成查询)
csharp
List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// 查询语法
var evenNumbers = from num in numbers
where num % 2 == 0
select num;

// 方法语法
var squares = numbers.Where(n => n % 2 == 0)
.Select(n => n * n);

// 更多LINQ操作
var firstNumber = numbers.First();
var lastNumber = numbers.Last();
var maxNumber = numbers.Max();
var orderedNumbers = numbers.OrderBy(n => n);
var groupedNumbers = numbers.GroupBy(n => n % 2 == 0 ? "偶数" : "奇数");
15. 泛型
csharp
// 泛型类
public class Repository
{
private List items = new List();

public void Add(T item)
{items.Add(item);
}public T Get(int index)
{return items[index];
}

}

// 泛型方法
public static T Max(T a, T b) where T : IComparable
{
return a.CompareTo(b) > 0 ? a : b;
}

// 使用
var stringRepo = new Repository();
stringRepo.Add("Hello");

var intRepo = new Repository();
intRepo.Add(42);

http://www.zskr.cn/news/11941.html

相关文章:

  • 9-26
  • 2025.9.25总结 - A
  • Python建立ETF网格自动化交易集成动量阈值判断
  • 一文读懂Zookeeper与Kafka:从原理到实战部署 - 实践
  • Java 生态监控体系实战:Prometheus+Grafana+SkyWalking 整合全指南(三) - 教程
  • AC自动机在线版本(alert命中报警)
  • US$79 BMW FEM/BDC Key Programmer Data Desktop Test Platform for FEM/BDC Key and Program ECU Gearbox
  • (南科大深度学习课程笔记)Lecture_2_Mathematical background(数学背景)(上) - 详解
  • 页面卡顿问题分析与解决方案总结复盘
  • 实用指南:【FastMCP】中间件
  • Linux网络:运用UDP实现网络通信(网络套接字的创建绑定)
  • 常见进制
  • 大 LCP 时代(stupid.*)
  • 实用指南:Python实现手榴弹爆炸算法(Grenade Explosion Method, GEM)(附完整代码)
  • yolov10_float16.tflite TO yolov10_int8.tflite
  • Netty:完成RPC服务(实战)
  • 相交链表-leetcode
  • SQL Server从入门到项目实践(超值版)读书笔记 26 - 实践
  • 2025.9.25 sos dp小记
  • 我之软件工程观
  • vite+ts取别名@
  • day004
  • 软件测试团队准备解散了......
  • 重生之从零开始的神经网络算法学习之路 —— 第八篇 大型数据集与复杂模型的 GPU 训练实践
  • MIT s6.828环境搭建
  • kubernetes事件监控工具--Kube-Event
  • 企业档案管理系统:精准破局制造行业档案管理困境 - 指南
  • 喵喵大王の新日记
  • 什么是Delphi4Python?
  • 实用指南:Python的大杀器:Jupyter Notebook处理.ipynb文件