C#
搬砖的诗人Z
全栈工程师,侧重项目技术解决方案规划和开发
展开
-
C# 中的匿名方法
Process 方法接受一个 int 参数和一个 Action 委托作为参数,然后调用传入的委托。第一次调用 Process 方法时使用了匿名方法,第二次调用使用了 Lambda 表达式,它们都实现了对参数的平方或立方操作。C# 中的匿名方法是一种可以在代码中定义但不命名的方法。它们通常用于简化委托的使用,并可以在需要时直接声明和使用,而不必事先定义命名方法。原创 2024-05-09 09:51:15 · 574 阅读 · 0 评论 -
Quartz怎么简单创建一个定时执行的任务
3.调用job,以指定时间策略执行。继承 IJob编辑自定义任务。如果只执行一次的话这样即可。Cron表达式下节详细介绍。1.安装Quartz包。定时600s执行一次。原创 2024-05-08 10:38:19 · 407 阅读 · 0 评论 -
LINQ 提供了两种主要的查询语法:方法语法和查询表达式
在方法语法中,每个 LINQ 方法都是通过在数据源上调用一个扩展方法来实现的。方法语法是使用 LINQ 扩展方法来构建查询的方式,这些方法都定义在 System.Linq 命名空间中。查询表达式是一种类似于 SQL 的查询语法,它提供了一种更加声明式的方式来编写 LINQ 查询。在查询表达式中,from 关键字用于指定数据源,where 关键字用于筛选数据,orderby 关键字用于排序数据,select 关键字用于选择数据源中的元素或对元素进行转换。原创 2024-05-07 10:05:28 · 442 阅读 · 0 评论 -
LINQ表达式学习入门
中的一个强大的查询语言集成特性,它提供了一种统一的方式来查询各种数据源,包括对象集合、数据库、的查询语句对数据进行筛选、排序、分组和转换,同时还能利用。的强类型特性和编译时检查来确保查询的安全性和效率。,开发人员可以使用类似。原创 2024-05-07 09:56:06 · 476 阅读 · 0 评论 -
Winform配置和系统缩放不影响大小
Winform配置和系统缩放不影响大小。原创 2024-05-04 10:08:27 · 172 阅读 · 0 评论 -
用C#写一个特性,在函数上面可以自动计算函数耗时情况
TimingAttribute类是自定义的特性类,用来标记需要计时的方法。TimingInterceptor类是一个拦截器,它通过反射来拦截被TimingAttribute标记的方法,并在方法执行前后进行计时。MyClass中的MyMethod方法被标记为需要计时,当调用这个方法时,它会被TimingInterceptor拦截,计算执行时间并输出。用C#写一个特性,在函数上面可以自动计算函数耗时情况。原创 2024-05-03 09:59:26 · 482 阅读 · 0 评论 -
C# 中返回迭代器 和直接返回List结果有什么不同
在C#中,返回迭代器和直接返回List结果之间有一些重要的区别。这些区别涉及到内存使用、性能以及灵活性等方面。原创 2024-05-02 10:51:55 · 617 阅读 · 0 评论 -
C# 中使用 LINQ可以采取一些优化策略来提高,效率延迟加载可以使查询结果在需要时才进行计算,而不是立即计算
通过采取这些优化策略,可以有效提高 LINQ 查询的效率。原创 2024-05-02 10:46:12 · 394 阅读 · 0 评论 -
Winfrom调用默认浏览器打开指定网页
这个异常通常是由于尝试使用Process.Start()方法打开一个URL而不是一个可执行文件导致的。为了解决这个问题,你可以使用Process.Start方法的另一个重载,它接受一个ProcessStartInfo对象作为参数,该对象包含了关于要启动进程的信息。原创 2024-05-01 11:05:34 · 413 阅读 · 0 评论 -
Winform的App.config文件配置的读取
您可以使用 ConfigurationManager 类来读取 App.config 文件中的设置。首先,您需要在代码中添加 System.Configuration 命名空间的引用。这样,您就可以在应用程序中访问并使用配置的设置了。您可以根据需要添加任意数量的设置。原创 2024-05-01 11:04:18 · 545 阅读 · 0 评论 -
WinForms 应用程序中使用 SignalR 连接到服务器
假设您已经在服务器端实现了名为 SignalRHub 的 SignalR Hub,并且该 Hub 包含了一个名为 SendMessage 的方法,用于接收来自客户端的消息,并将其广播给所有连接的客户端。客户端在收到消息时调用名为 ReceiveMessage 的方法来处理。原创 2024-04-29 10:13:57 · 632 阅读 · 0 评论 -
C#写一个windows消息推送通知
【代码】C#写一个windows消息推送通知。原创 2024-04-28 10:15:34 · 319 阅读 · 0 评论 -
.NET高级面试指南专题三十【MVC模式介绍,每个组件都有不同的责任,协同工作以实现应用程序的目标】
UserModel表示用户数据,UserView表示用户界面,UserController充当中介来更新模型并将数据显示到视图上。这种分离使得各个组件可以独立开发、测试和维护,提高了代码的可读性和可维护性。是一种软件设计模式,用于将应用程序分解为三个主要组件:模型(每个组件都有不同的责任,协同工作以实现应用程序的目标。原创 2024-04-27 11:39:52 · 729 阅读 · 0 评论 -
asp.net core webapi 写一个可以上传图片的接口,并把图片转成base64
asp.net core webapi 写一个可以上传图片的接口,并把图片转成base64。原创 2024-04-26 10:06:57 · 422 阅读 · 0 评论 -
Centos安装dotnet6环境
【代码】Centos安装dotnet6环境。原创 2024-04-26 09:52:01 · 283 阅读 · 1 评论 -
用C#写一个读取pdf文档内容的库
安装这两个库,第二个库一定要安装否则有些pdf文件读取会出现异常。原创 2024-04-24 09:37:27 · 494 阅读 · 0 评论 -
.net core webapi 添加日志管理看板LogDashboard
net core webapi 添加日志管理看板LogDashboard。我们用的是Nlog文件来配置。原创 2024-04-22 10:22:51 · 535 阅读 · 0 评论 -
.net core webapi 高颜值的接口管理系统界面取代swagger,更好调试和查看
net core webapi 高颜值的接口管理系统界面取代swagger,更好调试和查看。原创 2024-04-22 10:01:28 · 343 阅读 · 0 评论 -
C#调用base64图片居然报错Convert.FromBase64String 有效的 Base-64 字符串
C#调用base64图片居然报错Convert.FromBase64String 有效的 Base-64 字符串。具体原因是转过来的字符串包含很多不兼容字符,这边提供一个通用的方法处理。原创 2024-04-18 10:01:24 · 654 阅读 · 0 评论 -
使用PuppeteerSharp后台去截图指定网站
使用PuppeteerSharp后台去截图指定网站。原创 2024-04-17 09:54:04 · 423 阅读 · 0 评论 -
.net core webapi 发布后出现访问不了swagger让人抓狂的原因
小编最近发布一个测试的webapi,想要给三方测试使用,结果发布后访问不了swagger,找了半天原因急死了。.net core webapi 发布出现访问不了swagger让人抓狂。仅在开发环境下才会出现swaggerUI,我晕死,去掉这个if即可!原创 2024-04-17 09:31:55 · 858 阅读 · 0 评论 -
研究了一个周末,写了一个可以给微信推送消息的接口
注册企业微信,通过企业微信自定义小程序配置,然后微信关注该企业微信,后台通过企业微信接口就可以实现推送。给指定范围的人发送消息,不可以给未知的用户推送消息,用户可以随时取消关注,则不再发送消息。研究了一个周末,写了一个可以给微信推送消息的接口。原创 2024-04-16 09:39:46 · 494 阅读 · 0 评论 -
C#在后台自动化截图指定网站并保存图片
先安装PuppeteerSharp的库。指定截图当前页内容,不滚动。原创 2024-04-12 09:49:10 · 484 阅读 · 0 评论 -
开源推荐榜【Casbin.NET 一个为.NET(C#)项目设计的高效且强大的访问控制库】
我们首先创建了一个Casbin执行器实例,指定了模型文件和策略文件的路径。然后,我们定义了用户、资源和操作,并使用Enforce方法来检查用户是否有权限执行特定操作。我们希望可以让指定的主体 subject,可以访问指定的资源 object,访问可以是读和写。Casbin 是一个强大高效的开源访问控制库,支持各种 访问控制模型 , 如 ACL, RBAC, ABAC 等。另外,Casbin 能够处理标准流程以外的许多复杂授权场景,还支持添加 RBAC 和 ABAC 等。原创 2024-04-11 10:09:29 · 861 阅读 · 0 评论 -
C# 类型转换的方式和效率对比
在选择类型转换方式时,应根据具体情况考虑效率和安全性。对于简单的类型转换,隐式或显式转换通常是最佳选择;对于复杂或不确定的情况,Convert类或TryParse方法提供了更安全的选项。总的来说,应尽量避免频繁的类型转换,以提高程序的性能和可维护性。在C#中,类型转换是一项常见的操作,但不同的方式可能会有不同的性能表现。原创 2024-04-10 09:31:25 · 735 阅读 · 0 评论 -
WPF封装一个鼠标事件控件界面框选的功能
WPF封装一个鼠标事件控件界面框选的功能。原创 2024-04-06 09:48:49 · 811 阅读 · 1 评论 -
在C#中,可访问级别Public,private,protected,internal
提供了几种可访问级别,它们决定了哪些代码可以访问特定成员。)用于控制类、字段、方法和属性等成员的可访问性。在C#中,可访问级别(原创 2024-04-01 10:28:04 · 813 阅读 · 0 评论 -
C#的await常用和扩展方法
一起使用,用于异步方法中等待异步操作的完成,并且在异步操作完成后,恢复执行该方法。关键字的作用是将异步操作的等待转换为对异步结果的处理,使得异步编程更加简洁和可读。中用于等待异步操作完成的关键字。对象的异步方法完成。方法可以等待多个任务中的任意一个完成。await 关键字用于等待一个返回。表达式返回其结果(如果有的话)。方法可以等待多个任务全部完成。结合,可以实现异步操作的取消。来捕获异步操作中的异常。原创 2024-04-01 10:08:55 · 643 阅读 · 0 评论 -
WPF实现一个完整的框选,以及超出框选区域后的处理
CaptureMouse和ReleaseMouseCapture处理超出window部分处理。WPF实现一个完整的框选,以及超出框选区域后的处理,原创 2024-03-29 09:47:34 · 385 阅读 · 0 评论 -
C#中的PLINQ和LINQ的效率对比
对于IO密集型操作,如读取文件、访问数据库等,PLINQ的性能提升可能有限,甚至可能不如普通LINQ。并行化操作可能导致多个线程同时访问共享资源,如共享集合或共享变量,这可能会引发资源竞争和同步问题,需要通过锁或其他同步机制来解决,这会增加代码的复杂性和潜在的错误。在这种情况下,普通的LINQ可能更高效,因为它没有额外的并行化开销。因此,在选择使用LINQ还是PLINQ时,需要考虑数据集的大小、操作类型以及系统资源等因素,以确保选择最适合的工具来实现最佳的性能。框架中的功能,用于对集合进行查询和操作。原创 2024-03-28 09:36:14 · 675 阅读 · 0 评论 -
开源推荐榜【Sejil一个 .NET带界面的日志管理组件】
Sejil 是一个库,使您能够直接从应用程序捕获、查看和过滤 ASP.net Core 应用程序的日志事件。它支持结构化日志记录、查询以及保存日志事件查询。原创 2024-03-26 10:15:13 · 637 阅读 · 0 评论 -
开源推荐榜【强大的 .NET 多级缓存框架】
开发的一个易于使用、快速且强大的缓存库,具备高级的弹性特性和可选的分布式第二级缓存功能。它在处理各种类型的缓存方面有着丰富的经验,包括内存缓存、分布式缓存、HTTP 缓存、CDN、浏览器缓存以及离线缓存等。可选的分布式第二级缓存,使用任何实现了标准 IDistributedCache 接口的实现,以提高弹性和性能,特别是在多节点场景或避免冷启动时的典型问题(初始空缓存)。:在多节点场景中,背板可以发送通知给其他节点,保持所有涉及的内存缓存完全同步,无需额外工作。:类似于 HTTP 条件请求的缓存条件刷新。原创 2024-03-26 09:53:13 · 550 阅读 · 0 评论 -
什么是元编程,.NET有哪些元编程的手段和场景?
它允许在运行时动态获取程序集、类型和成员的信息,并对它们进行操作。通过反射,可以实现动态创建对象、调用方法、获取和设置属性等操作。框架中的一个组件,它提供了对动态语言的支持,并允许在运行时动态执行脚本和调用动态语言中的对象。这些元编程的手段和场景能够在运行时动态地创建、组织和操作代码,从而实现更灵活和动态的应用程序。),它允许在编译时不确定对象类型,而是在运行时根据实际类型进行动态绑定。框架提供了编译器服务,允许在运行时动态编译和执行代码。等命名空间下的类,可以实现动态代码的生成和执行。原创 2024-03-24 11:18:26 · 250 阅读 · 0 评论 -
C#中const与readonly关键字区别
如果你需要一个值在运行时才能确定,并且在初始化后不会更改,那么使用readonly。如果你知道一个值在编译时就会被确定,并且不会更改,那么使用 const。原创 2024-03-22 09:53:04 · 601 阅读 · 0 评论 -
C#经典内存泄露场景的写法解析
正确释放非托管资源: 使用Marshal类中的方法来释放非托管资源,如Marshal.FreeHGlobal释放全局内存、Marshal.Release释放。:如果一个长生命周期的对象持有一个短生命周期对象的引用,而这个短生命周期对象实际上应该被回收,就会导致内存泄漏。使用安全的封装: 将非托管函数封装在安全的托管类中,并在该类的析构函数中释放非托管资源,以确保资源被正确释放。检查非托管代码: 对于调用非托管函数的情况,需要确保非托管代码中的内存管理是正确的,没有内存泄漏。原创 2024-03-21 09:46:42 · 658 阅读 · 0 评论 -
C#中的override和overload介绍
override 用于派生类中重新定义基类中的虚方法或抽象方法,实现多态性;而 overload 则是在同一个类中定义多个同名方法,但参数列表不同,以提供不同的功能或处理方式。而 overload 则是在同一类中,方法名称相同但参数不同,主要用于重载同一操作的不同形式。:override 关键字用于在派生类中重新定义(覆盖)基类中的虚方法或抽象方法。:overload 指的是在同一个类中定义多个具有相同名称但参数列表不同的方法。:主要用于实现多态性,即派生类可以为其基类中的虚方法或抽象方法提供自己的实现。原创 2024-03-20 10:15:28 · 1048 阅读 · 0 评论 -
C#中的值类型和引用类型
引用类型存储在堆上,而变量本身存储的是对该数据的引用(即内存地址)。因此,当你将一个引用类型赋值给另一个引用类型时,它们实际上引用的是相同的对象。在C#中,数据类型可以分为值类型和引用类型。这两者在内存中存储和处理方式不同,理解它们之间的区别对于编写高效且正确的代码至关重要。值类型直接包含它们的数据,它们存储在堆栈上。当你将一个值类型赋值给另一个值类型时,会创建一个新的独立副本。理解这些概念有助于避免常见的内存管理错误,并能够更好地设计和优化代码。原创 2024-03-19 10:57:27 · 597 阅读 · 0 评论 -
开源推荐榜【Winform也可以跨平台运行linux和Mac,来看看实现方案】
C#桌面应用程序跨平台(windows、linux、macos)界面开发组件,基于GTK组件开发,该组件的核心优势是使用C#的原生winform表单控件窗体设计器,相同的属性方法,C#原生开发即可,无需学习。一次编译,跨平台运行。原创 2024-03-18 10:23:48 · 2441 阅读 · 1 评论 -
单元测试开发必不可少的一项工作,C#怎么来写单元测试
通常,单元测试覆盖率以百分比表示,表示测试覆盖了目标代码的百分比。一般来说,单元测试覆盖率越高,说明被测试的代码逻辑被覆盖得越全面,但并不意味着代码就一定是正确的或者质量就一定很高。在C#中编写单元测试通常使用一种称为xUnit的测试框架,它是一个流行的、开源的测试框架,它的语法简洁而且易于使用。促进代码文档化: 编写单元测试强迫你考虑如何使用你的代码,从而促进了代码的文档化。支持重构和改进设计: 当你有一套良好的单元测试时,你可以更加自信地对代码进行重构和改进设计,因为你可以确保没有破坏现有的功能。原创 2024-03-17 09:46:58 · 446 阅读 · 0 评论 -
什么是C#的扩展方法,要怎么自定义使用
中的扩展方法是一种特殊的静态方法,允许你向现有的类添加新的方法,而无需修改类的原始定义。它们使得可以在不修改原始类的情况下,给类添加新的行为。这种功能在编写库或者框架时非常有用,因为它允许你向已有的类添加新的功能,同时不会破坏现有的代码。扩展方法背后的原理是在编译时对方法调用进行处理。当调用一个扩展方法时,编译器会将其解析为对静态方法的调用,而不是目标对象的实例方法。5. 可能造成混乱: 扩展方法可能会让代码变得难以理解,因为它们不是类的实际成员,而是看起来像是类的一部分。原创 2024-03-16 09:57:55 · 534 阅读 · 0 评论