时间:2025-07-04 11:43
人气:
作者:admin
IsNullOrEmpty是一个静态方法,它用于检查一个字符串是否为空或者为null。
public static bool IsNullOrEmpty(string value);
IsNullOrWhiteSpace是一个静态方法,它用于检查一个字符串是否为空、为null或者只包含空格。【如果字符串包含特殊字符,或者转义符、或者空格,或者制表符则返回true】
public static bool IsNullOrWhiteSpace(string value);

常见的IOC框架:微软.net core 内置的DI、Autofac、Unity
IOC生命周期:
在 C# 中,async 和 await 是两个关键字,用于处理异步编程。它们有特定的用途和规则,不能单独出现。以下是详细的解释:
async 关键字

await


using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main(string[] args)
{
Console.WriteLine("开始异步操作");
await DoWorkAsync();
Console.WriteLine("异步操作完成");
}
public static async Task DoWorkAsync()
{
Console.WriteLine("DoWorkAsync 开始");
await Task.Delay(1000); // 模拟异步操作
Console.WriteLine("DoWorkAsync 结束");
}
}
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
多进程和多线程区别
多进程:操作系统中同时运行的多个程序
多线程:在同一个进程中同时运行的多个任务
举个例子,多线程下载软件,可以同时运行多个线程,但是通过程序运行的结果发现,每一次结果都不一致。 因为多线程存在一个特性:随机性。造成的原因:CPU在瞬间不断切换去处理各个线程而导致的,可以理解成多个线程在抢CPU资源。

多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。
委托(Delegate)是C#中的一种类型,用于引用一个或多个方法。委托可以看作是方法的引用或指针,它允许你将方法作为参数传递给其他方法,或者将方法存储在变量中以便后续调用。委托在C#中广泛用于事件处理、回调函数和多线程编程等场景。
主要区别
委托实例可以被直接调用和修改。
事件实例只能通过+=和-=操作符订阅和取消订阅,不能直接调用。
总结:
委托是一种类型,用于引用一个或多个方法,提供了一种类型安全的方式来调用方法。
事件是一种机制,基于委托,用于允许对象提供通知,封装了委托的使用,提供了更强的安全性和封装性。
如果本文介绍对你有帮助,可以一键四连:点赞+评论+收藏+推荐,谢谢!