当前位置: 首页 > 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.jsqmd.com/news/3914/

相关文章:

  • 9-23
  • 9-26
  • Ubuntu Uninstall App
  • 20250925
  • 题解:P2662 牛场围栏
  • day11 课程(学员管理系统案例)
  • c语言初步学习
  • Cloudflare安全验证过程全解析
  • 2025.9.25总结 - A
  • US$128 OBD II Adapter Plus OBD Cable Works with CKM100 and DIGIMASTER III for Key Programming
  • jmeter函数
  • Python建立ETF网格自动化交易集成动量阈值判断
  • 一文读懂Zookeeper与Kafka:从原理到实战部署 - 实践
  • Java 生态监控体系实战:Prometheus+Grafana+SkyWalking 整合全指南(三) - 教程
  • 【网络编程】UDP 编程实战:从套接字到聊天室多场景计划构建
  • AC自动机在线版本(alert命中报警)
  • US$79 BMW FEM/BDC Key Programmer Data Desktop Test Platform for FEM/BDC Key and Program ECU Gearbox
  • week1 homework
  • (南科大深度学习课程笔记)Lecture_2_Mathematical background(数学背景)(上) - 详解
  • Java EE ----- Spring MVC (上) - 实践
  • Windows 10 C盘占用释放 - tfel
  • CherryStudio+cpolar:让智能工作流突破组织边界 - 详解
  • 科学计算方法--矩阵分析记录
  • window.addEventListener(message,()={})中的回调函数无故被一直触发的问题 - broky
  • python+pillow+Image实现图片压缩到指定大小
  • 页面卡顿问题分析与解决方案总结复盘
  • 分布式链路追踪-SkyWalking - 指南
  • 实用指南:【FastMCP】中间件
  • Say 题选记(9.21 - 9.27)
  • 3D 高斯训练速度和消耗 - MKT