c#
文章平均质量分 85
小飞侠hello
这个作者很懒,什么都没留下…
展开
-
c# 多线程创建及线程同步
BeginInvoke倒数第二个参数(MethodCompleted)是回调方法委托类型,他是回调方法的委托,此委托没有返回值,有一个IAsyncResult类型的参数,当method方法执行完后,系统会自动调用MethodCompleted方法。ManualResetEvent:在调用 `Set` 方法后,所有等待线程都会被唤醒并继续执行,直到显式调用 `Reset` 方法将 ManualResetEvent 设置回无信号状态为止。即每次调用 `Set` 方法会唤醒所有等待线程。原创 2024-03-08 09:15:23 · 952 阅读 · 0 评论 -
c#委托、lambda、事件
2.注册有多个方法的委托想要开启新线程去执行委托,可以通过action.GetInvocationList()获取到所有的委托,然后循环,每个方法执行的时候可以BeginInvoke。(还是在同一线程执行)会开启一个新的线程去执行委托,注册有多个方法的委托,不能使用BeginInvoke。3.使用多播委托的时候可能会遇到一个问题,就是委托链的第一个方法报错了,导致后面的注册的方法都无法调用。匿名方法的意义在于:快速方便的实例化委托,不用定义具体的方法来关联委托,就是临时定义个方法(处理逻辑)与委托相关联。原创 2024-02-28 14:04:56 · 1166 阅读 · 0 评论 -
c# 任务(Task)以及异步 await(等待) 、Async(异步)
Task出现之前,微软的多线程处理方式有:Thread→ThreadPool→委托的异步调用,虽然也可以基本业务需要的多线程场景,但它们在多个线程的等待处理方面、资源占用方面、线程延续和阻塞方面、线程的取消方面等都显得比较笨拙,ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。Task.WhenAny(tasks.ToArray()).ContinueWith(x => Console.WriteLine("某个Task执行完毕"));原创 2024-02-29 10:54:02 · 1245 阅读 · 0 评论 -
c# using 用法
using+别名=包括详细命名空间信息的具体类型,这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。,当然并不是所有的类都适用,只有实现了IDisposable接口的类才可以使用。的,在一定的范围内有效,出了这个范围时,自动。原创 2024-02-27 08:59:09 · 505 阅读 · 0 评论 -
c# 异常处理
代码中 catch 块的计算顺序为从上到下,但针对引发的每个异常,仅执行一个 catch 块。如果没有 catch 块指定匹配的异常类,则将选择不具有类型的 catch 块(如果语句中存在)。默认所有系统异常派生于 System.SystemException,所有的应用程序异常派生于 System.ApplicationException。应用程序异常一般可以预测,比如文件对象找不到啦,值不在范围内啦,数据类型不一致等等,设计,处理逻辑可以判断的。:用于检查发生的异常,并帮助发送任何可能的异常。原创 2024-02-26 13:42:48 · 1121 阅读 · 0 评论 -
c# 非托管资源的释放(析构函数、Dispose)
调用了Dispose方法。每一个类库固然能够提供各自释放资源的方法,好比close()、release()、clear()等等。使用using 语句语句,在一定的范围内有效,除了这个范围时,自动调用IDisposable的。所以在自定义的类,并且继承IDisposable接口的时候,重写虚函数Dispose,并且还为实现了IDispose接口的类提供了using释放资源的语法糖。调用的是微软类库或者第三方类库,通常类库会提供释放的方法,即约定为。并且新建带参数的Dispose函数,在该函数实现释放资源。原创 2024-02-26 09:17:50 · 463 阅读 · 0 评论 -
c# 类、接口、抽象类
2、函数调用out参数量,必须把它当作尚未赋值(即可以把已赋值的变量当作out参数,但存储在该变量中的值在方法执行时会丢失);口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法,抽象类可以定义属性、字段、包含有实现的方法。方法1:声明数组类型的参数,添加 params 关键字,就可以使用任意数量的 int 参数调用该方法。3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)表示向方法传递一个值类型,避免复制值的开销,同时又不想在方法内改变值。原创 2024-02-23 11:27:59 · 908 阅读 · 0 评论 -
c#常用的数据结构及LINQ语法
数据结构 类型及备注 插入和删除 查找Array 顺序存储的线性表、定长 不支持(这里的插入与删除指会更改表长的行为) O(N)LinkedList 链式存储的线性表、不定长 O(1) O(N)List 顺序存储的线性表、不定长、动态扩容 O(N),结尾则是O(1) O(N)Stack 栈、不定长、动态扩容 O(1) 只能访问栈顶Queue 队列、不定长、动态扩容 O(1) 只能访问队列头部。原创 2024-02-22 09:07:04 · 1484 阅读 · 0 评论 -
c# 入门学习
属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。相反,它们具有可读写或计算它们值的 访问器(accessors)。例如,有一个名为 Student 的类,带有 age、name 和 code 的私有域。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性.它们使用 访问器(accessors) 让私有域的值可被读写或操作。原创 2023-04-04 15:43:38 · 517 阅读 · 1 评论 -
使用vs code 编写c#程序
这里下载的是windows版本.NET 7.0 SDK 64位的。安装完成之后管理员权限运行 cmd 输入dotnet --version 如果输出版本号就是安装成功!b.解决方案管理器插件(vscode-solution-explorer)4.命令行单独利用 SDK 命令初始化工作空间并编译运行 C# 程序。3.下载安装 .NET Code SDK。a.中文包插件(chinese)c. C# 扩展插件(c#)1.下载安装vs code。原创 2023-04-03 11:43:18 · 6807 阅读 · 1 评论