位置: 文档库 > C#(.NET) > 文档下载预览

《常用的C#类.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

常用的C#类.doc

《常用的C#类》

C#作为.NET平台的核心编程语言,凭借其面向对象特性、强类型系统和丰富的类库,成为企业级应用开发的首选。本文将系统梳理C#开发中高频使用的核心类,涵盖基础类型、集合操作、文件处理、日期时间、网络通信、异步编程等关键领域,通过代码示例和场景分析帮助开发者高效运用这些工具。

一、基础数据类型类

1.1 数值类型封装类

C#通过结构体封装基本数值类型,提供格式化、转换和运算支持:

// 整数类型转换示例
int num = 123;
string strNum = num.ToString("D5"); // 输出"00123"
long bigNum = Convert.ToInt64(strNum); // 字符串转长整型

// 浮点数精度控制
double pi = 3.1415926;
string formattedPi = pi.ToString("F4"); // 输出"3.1416"
decimal price = 19.99m; // 高精度货币计算

关键类:Int32、Int64、Double、Decimal、Convert

1.2 字符串处理类

String类提供200+方法,StringBuilder优化高频修改场景:

// 字符串操作示例
string greeting = "Hello, World!";
int index = greeting.IndexOf(','); // 查找字符位置
string subStr = greeting.Substring(0, 5); // 截取"Hello"
bool contains = greeting.Contains("World"); // 判断包含

// StringBuilder性能对比
StringBuilder sb = new StringBuilder();
for (int i = 0; i 

关键类:String、StringBuilder、Char、StringComparison

二、集合框架类

2.1 线性集合

List动态数组与LinkedList链表对比:

// List操作示例
List names = new List { "Alice", "Bob" };
names.Add("Charlie"); // 尾部添加
names.Insert(1, "David"); // 指定位置插入
string removed = names.RemoveAt(0); // 移除并返回元素

// LinkedList高效插入
LinkedList numbers = new LinkedList();
var node = numbers.AddFirst(10); // 头节点
numbers.AddAfter(node, 20); // 节点后插入

关键类:List、LinkedList、Array、Stack、Queue

2.2 键值集合

Dictionary与SortedDictionary性能差异:

// Dictionary操作示例
Dictionary ages = new Dictionary();
ages.Add("Alice", 25);
ages["Bob"] = 30; // 索引器赋值
if (ages.TryGetValue("Charlie", out int age)) {
    Console.WriteLine(age);
}

// SortedDictionary自动排序
var sortedAges = new SortedDictionary();
sortedAges.Add("Zoe", 28); // 自动按键排序

关键类:Dictionary、SortedDictionary、HashSet

三、文件与流操作类

3.1 文件系统操作

File类提供静态方法简化常见操作:

// 文件读写示例
string content = File.ReadAllText("test.txt"); // 读取全部文本
File.WriteAllLines("output.txt", new[] { "Line1", "Line2" }); // 写入多行

// Directory目录操作
string[] files = Directory.GetFiles(@"C:\Temp", "*.log"); // 搜索文件
Directory.CreateDirectory(@"C:\Temp\Sub"); // 创建目录

关键类:File、FileInfo、Directory、DirectoryInfo、Path

3.2 流式读写

FileStream与MemoryStream适用场景:

// 大文件分块读取
using (var fs = new FileStream("large.dat", FileMode.Open)) {
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0) {
        ProcessChunk(buffer, bytesRead); // 处理数据块
    }
}

// MemoryStream内存操作
var ms = new MemoryStream();
byte[] data = Encoding.UTF8.GetBytes("Hello");
ms.Write(data, 0, data.Length);
ms.Position = 0; // 重置指针
string result = Encoding.UTF8.GetString(ms.ToArray());

关键类:FileStream、MemoryStream、StreamReader、StreamWriter、BinaryReader

四、日期与时间处理类

4.1 DateTime结构体

// 日期运算示例
DateTime now = DateTime.Now;
DateTime tomorrow = now.AddDays(1);
TimeSpan duration = tomorrow - now; // 时间间隔

// 格式化输出
string isoDate = now.ToString("yyyy-MM-dd"); // "2023-05-20"
string custom = now.ToString("dddd, MMMM dd"); // "Saturday, May 20"

关键类:DateTime、DateTimeOffset、TimeSpan、TimeZoneInfo

4.2 定时器类

System.Timers.Timer与System.Threading.Timer对比:

// System.Timers.Timer示例
var timer = new System.Timers.Timer(1000); // 1秒间隔
timer.Elapsed += (s, e) => Console.WriteLine($"Tick at {e.SignalTime}");
timer.AutoReset = true; // 自动重复
timer.Start();

// System.Threading.Timer轻量级实现
var threadTimer = new System.Threading.Timer(
    state => Console.WriteLine("Thread timer tick"),
    null, 0, 2000); // 延迟0ms后每2秒触发

五、网络通信类

5.1 HttpClient现代HTTP客户端

// 异步HTTP请求示例
async Task FetchDataAsync() {
    using var client = new HttpClient();
    client.BaseAddress = new Uri("https://api.example.com");
    client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));
    
    HttpResponseMessage response = await client.GetAsync("/data");
    response.EnsureSuccessStatusCode();
    return await response.Content.ReadAsStringAsync();
}

关键类:HttpClient、HttpRequestMessage、HttpResponseMessage、HttpClientHandler

5.2 TCP/IP通信

TcpClient与TcpListener实现基础网络通信:

// TCP服务器示例
var listener = new TcpListener(IPAddress.Any, 8080);
listener.Start();
Console.WriteLine("Waiting for connection...");

using (var client = await listener.AcceptTcpClientAsync()) {
    using (var stream = client.GetStream()) {
        byte[] buffer = new byte[1024];
        int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine($"Received: {message}");
    }
}

关键类:TcpClient、TcpListener、NetworkStream、Socket

六、异步编程核心类

6.1 Task与Task基础

// Task并行执行示例
async Task ProcessDataAsync() {
    Task task1 = LongRunningOperationAsync(1);
    Task task2 = LongRunningOperationAsync(2);
    
    int[] results = await Task.WhenAll(task1, task2);
    Console.WriteLine($"Results: {string.Join(",", results)}");
}

async Task LongRunningOperationAsync(int id) {
    await Task.Delay(1000); // 模拟I/O操作
    return id * 10;
}

关键类:Task、Task、TaskFactory、CancellationToken、CancellationTokenSource

6.2 并行循环与数据并行

Parallel类与PLINQ对比:

// Parallel.For示例
Parallel.For(0, 100, i => {
    Console.WriteLine($"Processing {i} on thread {Thread.CurrentThread.ManagedThreadId}");
});

// PLINQ数据并行
var numbers = Enumerable.Range(1, 1000);
var evenSquares = numbers.AsParallel()
    .Where(n => n % 2 == 0)
    .Select(n => n * n);

关键类:Parallel、ParallelLoopState、ParallelOptions、PLINQ

七、实用工具类

7.1 随机数生成

// Random类用法
var random = new Random();
int diceRoll = random.Next(1, 7); // 1-6的随机数
double randomDouble = random.NextDouble(); // [0.0,1.0)区间

// 加密安全随机数
using var rng = RandomNumberGenerator.Create();
byte[] bytes = new byte[16];
rng.GetBytes(bytes); // 生成16字节加密安全随机数

关键类:Random、RandomNumberGenerator、CryptoRandom(第三方)

7.2 编码转换

// 编码转换示例
string text = "中文测试";
byte[] utf8Bytes = Encoding.UTF8.GetBytes(text);
string utf16Text = Encoding.Unicode.GetString(utf8Bytes); // 可能乱码

// 正确转换方式
byte[] originalBytes = Encoding.Convert(
    Encoding.UTF8, 
    Encoding.GetEncoding("GB2312"), 
    utf8Bytes);
string gbText = Encoding.GetEncoding("GB2312").GetString(originalBytes);

关键类:Encoding、Encoder、Decoder、CodePagesEncodingProvider

关键词:C#类库、集合框架、文件操作、异步编程、网络通信、DateTime、Task、HttpClient、StringBuilder、Dictionary

简介:本文系统梳理C#开发中常用的核心类,涵盖基础数据类型、集合操作、文件流处理、日期时间管理、网络通信、异步编程等关键领域,通过代码示例和场景分析展示这些类的典型用法和性能优化技巧,帮助开发者提升.NET应用开发效率。

《常用的C#类.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档