![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 79
杨中科
这个作者很懒,什么都没留下…
展开
-
你真的知道吗?catch、finally和return哪个先执行
因此,无论是throw异常的时候还是return返回值的时候,被调用的方法只是把异常对象或者返回值放到了这个特定的位置,在return或者throw执行之后,如果方法中还有finally等没有执行完成的代码,那么这些代码仍然会在return、throw之后继续执行,然后方法执行才会结束,之后调用这个方法的代码才会从Stack Frame中读取到返回值或者获取到被调用的方法抛出的异常对象。上面程序执行结果是“bb”。接下来,我们再来捉弄一下方法的返回值,我们尝试在finally代码块中修改方法的返回值。原创 2023-08-02 06:04:27 · 133 阅读 · 0 评论 -
不用Blazor WebAssembly,开发在浏览器端编译和运行C#代码的网站
我将会为大家分享一个如何用.NET技术开发“在浏览器端编译和运行C#代码的工具”,核心的技术就是用C#编写不依赖于Blazor框架的WebAssembly以及Roslyn技术。原创 2023-02-10 06:38:58 · 629 阅读 · 1 评论 -
天坑,这样一个lambda随机取数据也有Bug
这段代码有的时候运行正常,有的时候则会断言失败,从而程序抛出异常,令人不解。原创 2022-12-07 06:21:03 · 191 阅读 · 0 评论 -
Entity Framework Core 7中高效地进行批量数据插入
因为之前的版本中,EF Core无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。现在支持.NET 7了原创 2022-12-01 10:24:10 · 1622 阅读 · 0 评论 -
谁说.NET没有GC调优,只改一行代码就让程序不再占用内存
经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。原创 2022-11-30 08:00:00 · 289 阅读 · 1 评论 -
两步开发.NET Core剪裁器,并且开源它
十天前,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。很多朋友对于这个开源项目的原理很感兴趣,因此我将通过这篇文章为大家介绍它的工作原理。技术1、检测程序加载的程序集和类微软提供了用于对.NET Core的运行时行为进行分析的库Diagnostics,它可以获取丰富的运行时信息,比如类的实例创建、程序集加载、类加载、方法调用原创 2022-03-22 08:00:00 · 235 阅读 · 0 评论 -
.NET Core剪裁器Zack.DotNetTrimmer升级瘦身引擎,并支持剪裁计划的录制和回放
上周,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。下面是Zack.DotNetTrimmer与.NET内置的剪裁器的对比图:项目地址:https://github.com/yangzhongke/Zack.DotNetTrimmer一周时间内,相关文章在各平台获得了超过四万阅读量,项目收获了将近200个star,原创 2022-03-21 10:10:48 · 223 阅读 · 0 评论 -
一个更好用的.NET Core程序瘦身器,减小程序尺寸到1/3
一、为什么要开发.NET Core程序瘦身器? .NET Core具有【剪裁未使用的代码】的功能,但是由于它是使用静态分析来实现的,因此它的剪裁效果并不是最优的。它有如下两个缺点:不支持Windows Forms和WPF,而对于程序剪裁功能需求最强烈的其实反而是桌面程序的开发者。 无法删除运行时没有被使用的程序集。比如,我们的程序中使用了A程序集,A程序又引用了B、C两个程序集,A程序集中只有M1方法使用了B程序集,而A程序集中只有M2方法使用了C程序集。我们的程序中只调用了A中的M1方法,而从.原创 2022-03-08 17:45:50 · 515 阅读 · 0 评论