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

C#学习2

  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/11228.html

相关文章:

  • AtCoder Beginner Contest 423 DEF题解
  • 在台风天找回了生活的本貌
  • day003
  • 课程学习
  • 代码规范与数学之美
  • 项目经理最常见的10个管理失误,你中招了吗?
  • 串口助手开发经验 - Luis-123
  • 《计算机算法设计与分析》系列--算法实现题1.1-统计数字问题
  • Temporal和Airflow有什么差别
  • lc1035-不相交的线
  • js里面的单引号、双引号及反引号的用法
  • 牛客刷题-Day4
  • 日志|动态规划|最长回文子串|最长公共子序列|HTML CSS
  • OTA升级时软件异常复位问题分析
  • Atcoder Educational DP Contest 做题记录
  • 20250924
  • 《Real-Time Rendering》第二章 图形渲染管线
  • 放弃Unity后,我为什么选择了Unigine?
  • 题单63——流程控制
  • 科技信息差(9.22) - 指南
  • 适合电子纸屏幕的简易象棋打谱程序
  • java_string比较中的细节
  • 【CV】GAN代码解析: networks.py
  • 9-24
  • 代码随想录算法训练营第八天 |344.反转字符串、541. 反转字符串II、LCR 122. 路径加密
  • 9/24
  • 完整教程:【力扣LeetCode】 1413_逐步求和得到正数的最小值
  • 测试脚本
  • 实用指南:python+django/flask的宠物救助及领养系统javaweb