其它功能
掌握常用高级特性与工具类
了解扩展方法、匿名类型、序列化等实用功能
拓展 .NET 技术视野
核心讲解
(1)扩展方法
给已有类型新增方法,不用修改原类型,静态类的静态方法,第一个参数加 this。
适合:给第三方库、系统类型扩展工具方法
本质:语法糖,还是静态方法调用
(2)匿名类型
临时定义的类型,不用写类,new { 属性名 = 值 }。
适合:临时组合数据、LINQ 投影
只读,只能读属性
方法内用,var 声明
(3)序列化
对象转二进制 / 文本,用于传输、存储。
系统自带:
System.Text.Json(推荐)、BinaryFormatter(过时)功能:序列化、反序列化
常用:JSON 序列化,接口传输、配置文件
(4)常用工具类
Guid:全局唯一标识符Stopwatch:高精度计时Environment:系统环境信息Convert:类型转换Math:数学运算
(5)更多进阶方向
LINQ to SQL / EF Core:数据库开发
ASP.NET Core:Web 开发
WPF/WinForms:桌面开发
MAUI:跨平台客户端
Blazor:Web 前端
操作步骤
实现字符串扩展方法
使用匿名类型
JSON 序列化
运行验证
代码示例
using System.Text.Json;
using System.Diagnostics;
// ===== 1. 扩展方法 =====
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(this string? str)
{
return string.IsNullOrWhiteSpace(str);
}
public static string MaskPhone(this string phone)
{
if (phone.Length != 11) return phone;
return phone.Substring(0, 3) + "****" + phone.Substring(7);
}
}
// 使用扩展方法
string s = "13812345678";
Console.WriteLine("手机号脱敏:" + s.MaskPhone());
Console.WriteLine("是否空:" + s.IsNullOrWhiteSpace());
// ===== 2. 匿名类型 =====
var person = new { Name = "张三", Age = 20, City = "成都" };
Console.WriteLine($"\n匿名类型:{person.Name},{person.Age}岁");
// ===== 3. JSON 序列化 =====
Student stu = new Student { Name = "李四", Age = 22, Score = 90 };
string json = JsonSerializer.Serialize(stu, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine("\n序列化:");
Console.WriteLine(json);
Student? stu2 = JsonSerializer.Deserialize<Student>(json);
Console.WriteLine($"反序列化:{stu2?.Name}");
// ===== 4. 工具类 =====
Console.WriteLine("\n工具类:");
Guid id = Guid.NewGuid();
Console.WriteLine("GUID:" + id);
Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(100);
sw.Stop();
Console.WriteLine($"计时:{sw.ElapsedMilliseconds}ms");
Console.WriteLine("机器名:" + Environment.MachineName);
Console.WriteLine(".NET版本:" + Environment.Version);
Console.ReadKey();
常见误区
扩展方法滥用:不要什么都写成扩展,语义不明、难以维护
匿名类型跨方法用:匿名类型只能方法内用,不能当返回值(除非用 object/dynamic)
序列化循环引用:对象互相引用序列化会报错,要配置忽略或者手动处理
停留在语法学习:C#/.NET 生态很大,结合方向深入学习框架和技术栈
课后练习
给 int 写一个扩展方法,判断是不是偶数
创建一个匿名对象,包含书名、价格、作者
把一个对象序列化成 JSON,保存到文件,再读取出来
规划你接下来的 C#/.NET 学习路线

