- 博客(82)
- 资源 (2)
- 收藏
- 关注
原创 C#如何用最简单方法调用Python?
本文讲述了C#如何用最简单调用Python的方法,通过命令行调用Python。它能够快速搭建起C#与Python之间的通信桥梁,尤其适合快速验证概念或进行初步集成测试。在大模型时代,Python学习的必要性增大,尤其是.NET开发,C#中调用Python大大降低了学习成本。对于在C#中调用Python大家还有什么好的方法,欢迎留言讨论。来源公众号:DotNet开发跳槽。
2024-05-21 12:25:52
661
原创 .NET 9 的几个新特性,新颖吗?
NET 9引入了针对云原生应用和性能优化的重大增强。值得注意的增强包括增强的JSON序列化选项,强大的LINQ方法如CountBy和AggregateBy,以及方便的CryptographicOperations.HashData API,用于高效的哈希操作。随着.NET 9的不断发展,它承诺为各种用例提供强大的工具和功能,帮助开发人员构建现代化、高性能的应用程序。在System.Text.Json中,.NET 9为序列化JSON提供了新的选项和一个新的单例,使得使用Web默认值进行序列化变得更加容易。
2024-05-07 12:45:23
647
原创 揭秘:C#语法中“_ =” 是什么?
当然也可以不添加这些特性,若不使用[FromRoute]、[FromQuery]和[FromBody]等特性来明确指示参数来源,ASP.NET Core WebAPI会遵循默认绑定规则尝试自动绑定请求数据。因此,为了确保代码清晰、易于理解和维护,以及请求数据绑定的确定性和一致性,建议在编写控制器方法时始终显式使用这些特性指定参数来源。根据请求数据的位置和格式,选择合适的属性进行参数绑定,是构建健壮、通用RESTful API的关键步骤之一。属性用于标识那些应从HTTP请求的路由数据中提取的参数。
2024-04-22 12:41:53
800
1
原创 一文读懂.NET WebAPI中FromRoute、FromQuery、FromBody的关键角色与用法
当然也可以不添加这些特性,若不使用[FromRoute]、[FromQuery]和[FromBody]等特性来明确指示参数来源,ASP.NET Core WebAPI会遵循默认绑定规则尝试自动绑定请求数据。因此,为了确保代码清晰、易于理解和维护,以及请求数据绑定的确定性和一致性,建议在编写控制器方法时始终显式使用这些特性指定参数来源。根据请求数据的位置和格式,选择合适的属性进行参数绑定,是构建健壮、通用RESTful API的关键步骤之一。属性用于标识那些应从HTTP请求的路由数据中提取的参数。
2024-04-16 12:38:24
924
原创 为什么C#要采用顶级语句?
NET6发布后,C#10莫名引入了顶级语句,这是一种简化代码结构的语言特性。在此之前,C#程序必须包含一个入口点,通常是Main方法,然后在该方法中编写主要的程序逻辑。而使用顶级语句后,可以直接在文件的顶部编写执行代码,而无需显式地定义一个Main方法。先来看官方的总结:“使用顶级语句,可以更轻松地创建简单的程序来探索新的算法。由于使用习惯传统有main函数的.NET项目,突然来个顶级语句还真有点不习惯,小编有时候在创建项目的时候就选择了禁用它。你可以直接在文件中编写代码,而不必担心方法和类的结构。
2024-01-15 12:42:05
721
1
原创 C#12新功能主构造函数:实用,简洁利落
主构造函数是 C# 12 引入的一个比较实用的新特性,为我们提供了更简洁和灵活的方式来定义类和结构体的构造函数。这一新特性将在日常开发中提高代码的可读性和开发效率。本文讲述了C#12的新特性主构造函数的语法以及依赖关系注入和初始化属性的案例,当然主构造函数还可以创建可变状态、初始化基类等,详情可以查看官网。大家觉得C#12的新特主构造函数实用吗?欢迎留言讨论或者吐槽。
2024-01-05 12:36:48
602
原创 .NET 8最强新功能:键控服务依赖注入
NET 8键控服务依赖项注入功能弥补了之前版本接口不能多个实现的缺陷。键控服务依赖项注入提供了一种强大的机制来管理和解析接口的多个实现。它允许开发人员根据提供的密钥选择特定的实现,从而实现更灵活、更高效的应用程序设计。在之前的依赖注入中,服务是根据其类型进行注册和解析的。这时候就可以使用.NET 8的新功能“键控服务依赖注入”。它允许您注册接口的多个实现,每个实现都与一个唯一键相关联,然后基于该键解析所需的实现。案例将准备一个接口,并且这个接口有两个类实现,最后使用键控服务依赖注入。
2023-12-25 12:31:36
723
原创 每个.NET开发都应掌握的C#网络编程知识点
这些知识点涵盖了.NET开发中常用的C#网络编程技能,帮助开发者构建出更加健壮和高效的网络应用。Socket是C#中用于网络编程的核心类,它提供了对TCP、UDP等协议的支持。它们的主要区别在于广播是将数据包发送到网络中的所有主机,而多播是将数据包发送到网络中的一组主机。网络安全在网络编程开发中至关重要,在C#开发中也需要注意网络安全,特别是涉及到敏感信息传输或用户身份验证的应用。在C#中进行HTTP请求是.NET开发中常见的任务,使用HttpClient类是一种常用的方式。欢迎留言讨论或者吐槽本文。
2023-12-18 12:23:43
253
原创 深入了解C#中Linq的Range和Repeat方法
其中,Range和Repeat是两个在LINQ中常用的方法,它们分别用于生成一系列连续的数字和重复指定的元素。Range和Repeat是LINQ中的两个简单而强大的方法,它们为开发人员提供了一些方便的工具,以便更轻松地处理和生成数据序列。在上面的例子中,Enumerable.Repeat(666, 6)生成了包含6个重复的数字666的序列。其中,element表示要重复的元素,count表示重复的次数。在上面的例子中,Enumerable.Range(2, 5)生成了从1开始,包含5个元素的整数序列。
2023-12-15 12:43:33
113
原创 每个.NET开发都应掌握的C#处理文件系统I/O知识点
掌握这些C#文件系统I/O知识点对于.NET开发者来说是至关重要的。通过灵活运用这些知识,开发者能够更加高效地处理文件和目录,确保应用程序的可靠性和性能。在日常开发中,不断深入学习和实践这些知识,将有助于提高开发者的文件系统操作技能。希望本文提供的C#文件系统I/O对每个.NET开发者都有所帮助,对于C#文件系统I/O你还知道哪些?欢迎留言讨论或者吐槽本文。
2023-12-05 12:36:22
186
原创 用上Parallel让你的.NET应用效率飙升
本文将介绍它的几种功能。这包括调试的复杂性,因为并行程序可能引入难以追踪的问题,线程安全性的挑战,需要小心管理共享数据的访问,以及性能开销的可能性,包括线程创建和上下文切换。并行编程的Parallel.ForEach 和 Parallel.For方法有它们的异步方法Parallel.ForEachAsync和Parallel.ForAsync,大家可以根据项目情况来调用。库简化了并行编程的复杂性,使开发人员能够以更轻松的方式利用并行性,提高应用程序的性能和响应能力,而无需深入处理底层线程管理的细节。
2023-11-29 12:25:59
161
原创 C#中的var究竟是强类型还是弱类型?
在C#中,var关键字是用来声明变量类型的,它是C# 3.0推出的新特征,它允许编译器根据初始化表达式推断变量类型,有点跟javascript类似,而javascript中的var是弱类型。这还得从LINQ,linq可以在各种IEnumerable类型上做筛选、变换等类似SQL的操作,这样就简化了强类型的操作复杂度,不同的操作返回的类型有的比较复杂,如果每次都写出类型代码就显得比较繁琐,这种情况下就推出了var关键字语法糖。在C#中,var关键字可以用于声明没有指定类型的变量,看着C#仿佛是弱类型语言。
2023-11-22 12:36:46
321
原创 每个.NET开发都应掌握的C#多线程知识点
是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;需要注意的是多线程是异步的实现方式。是一种并发编程的技术,它允许一个程序同时执行多个线程,每个线程都有自己的执行流程,但它们共享同一进程的内存空间。Task是.NET Frameworkd 4.0推出的新特性,被称为线程最佳实践,API也最多,Task的背后的实现也是使用了线程池线程。
2023-11-13 12:34:25
206
原创 .NET 8使用牛逼的AOT发布ASP.NET Core应用
NET AOT编译是一种.NET运行时的编译方式,它与传统的JIT编译方式不同。在传统的JIT编译中,.NET应用程序的代码在运行时才会被编译成本地机器码,而在AOT编译中,代码在运行之前就被提前编译成本地机器码。并可以减少内存的使用。本文介绍了AOT,并通过示例展示了在.NET8下使用AOT发布ASP.NET Core应用的过程。.NET8正式版本将在11月份发布,期待它带来更好的新特性,让.NET焕发青春。创建一个ASP.NET Core Web API项目,注意的是必须选择带AOT标识的项目。
2023-10-17 12:36:59
1359
原创 每个.NET开发都应掌握的C#特性(Attribute)知识点
特性在C#中既具有运行时用途,通过反射机制可以在程序运行时动态检查和操作已应用特性的代码元素,又具有编译时用途,可在编译时影响编译器的行为,例如条件编译、代码生成和静态分析,从而为开发者提供了在代码的不同阶段(编译和运行时)对代码进行元数据标记和定制的灵活性和功能。希望本文提供的C#特性知识对每个.NET开发者都有所帮助,对于C#特性的知识点,你还知道哪些?本文讲述了C#特性的一些知识点,比如自定义特性、内置特性、获取特性内容等,这些知识点都是.NET开发应该掌握的。)的文章已经有所介绍。
2023-10-09 12:38:20
119
原创 每个.NET开发都应掌握的C#反射知识点
首先了解一下概念,官方介绍“System.Reflection 命名空间中的类与 System.Type 使你能够获取有关加载的程序集和其中定义的类型的信息,如类、接口和值类型(即结构和枚举)。通俗的讲反射是C#中的一项技术,允许开发人员在运行时访问和操作程序集、类型和对象的信息。通过泛型反射,您可以动态地创建和操作泛型类型的实例,调用泛型方法,以及检查泛型类型的参数。当然也可以获得方法的特性,需要通过反射后的GetMethods获取所有方法,然后遍历方法并通过上面的方式获取特性的值或者执行处理逻辑。
2023-09-27 12:28:02
241
原创 .NET超简单轻量级的HTTP请求组件Flurl
Flurl提供了一种简单的方法来构建GET、POST、PUT等类型的请求,以及处理响应和异常。本文将介绍Flurl的GET、POST请求功能和序列化功能。本文讲述了Flurl的GET、POST请求功能和序列化功能,适合初学者阅读和学习,实际项目使用需要根据情况参考官网使用。从上面代码可以看出,get使用Flurl就两行代码返回值,而post加上请求参数也才三行代码。首先用nuget安装Flurl,如果在vs里可以使用nuget安装,需要安装安装Flurl和Flurl.Http两个包。
2023-09-22 12:32:10
443
原创 每个.NET开发都应掌握的C#异常处理知识点
避免在异常条件表达式中抛出异常:如提供了异常条件表达式,要避免在表达式中抛出异常,否则会造成条件变成false,新异常被忽略。避免以后可能变化的异常条件表达式:如异常条件可能因本地化等情况而改变,预期的异常条件将不被捕捉,进而改变业务逻辑。这使开发者能够根据异常类型采取不同的处理措施,以更精确的找到异常的类型并快速的解决问题。想好异常条件来避免在catch块中重新抛出异常:如果发现会捕捉到不能恰当处理、所以需要重新抛出的异常,那么最好优化异常条件,从一开始就避免捕捉。欢迎留言讨论或者吐槽本文。
2023-09-20 12:25:13
118
原创 C#为什么非要把函数叫方法?
例如,在数学中,“方法”可以指一种解决问题的途径。函数(function)是面向过程编程语言里,对可以独立调用代码段的另一种叫法,因为通常有数个输入和一个输出,很像数学里的那个函数。然而,在面向对象编程中,函数不再是独立的代码块,而是类或结构体的一个成员。因此,使用“方法”这个名称更能体现函数在面向对象编程中的概念。C#使用“方法”这个名称还是有其合理性的。在C#中,函数被称为方法,这是为了强调函数在面向对象编程中的概念。在面向对象编程中,方法是类或结构体的一个成员,它可以用来实现类或结构体的行为。
2023-09-11 12:42:42
135
原创 每个.NET开发都应掌握的C#集合知识点
List.是.NET Framework 2.0跟随泛型推出的新特征,有了它之后,避免了ArryList数据类型装箱拆箱消耗的问题,它.NET中最常用的集合之一。它实现了动态数组的概念,允许你轻松地添加、删除和访问元素,而无需担心数组大小的限制。System.Collections 命名空间中的类是 .NET Framework 中早期的集合实现,它们不是泛型的,并且性能相对较低。System.Collections.Concurrent 命名空间中的类提供了线程安全的集合,适用于多线程环境下的并发操作。
2023-09-04 12:28:18
125
原创 使用这两个组件,.NET 网页截图就这么简单
Selenium.WebDriver 是一个用于自动化浏览器操作的 .NET 库,它提供了一组 API,允许开发者模拟用户在浏览器中的行为,从而进行自动化测试、数据抓取、网页操作等操作。Selenium 是一个广泛使用的工具,用于自动化浏览器操作和测试,而 Selenium.WebDriver 是其在 .NET 平台上的一个实现。下面介绍这两个开源的组件以及他们抓取图片的案例。大家用过那些.NET的网也截图库,最好不依赖浏览器的库,欢迎大家在文章下方留言和吐槽,共同分析和讨论.NET的网也截图这个话题。
2023-08-28 12:27:39
306
原创 每个.NET开发都应掌握的C#委托事件知识点
委托和事件密不可分,所以本文将委托和事件的知识点一起介绍,并通过一些示例来帮助开发者更好地掌握这些重要的概念。委托是一种通用的类型,用于引用方法并执行它们,而事件是委托的一种实现,允许对象订阅和响应特定情况的通知,从而促进模块化和可维护的代码设计。委托和事件是C#中的重要概念,在C#中无论是实现回调机制、处理异步操作,还是实现事件驱动的架构,委托和事件都是不可缺的,每个.NET开发者都应该深入了解和熟练掌握。事件的持有者(事件发布者)在适当的时机触发事件,调用事件委托,从而通知所有订阅者执行相应的操作。
2023-08-21 12:43:48
238
原创 .NET把文件嵌入到程序集中的EmbeddedFile
有时候我们在发布程序时,不想让客户看到项目中的文件,这时就可以使用.NET的嵌入文件功能(虚拟文件)。在.NET中,虚拟文件(Virtual File)是一种特殊类型的文件,它们在编译时被嵌入到程序集中,而不是作为独立的文件存在于文件系统中。例如,如果嵌入的文件名为 “dotnet.txt”,它位于命名空间为 “Test7” 的程序集中,那么虚拟路径就是 “Test7.dotnet.txt”。此外,如果文件位于不同的程序集中,你需要使用正确的程序集名称来构建虚拟路径。生成后的文件夹是没有这个文件,如下图。
2023-08-18 12:47:42
170
原创 每个.NET开发都应掌握的C#接口知识点
委托回调通过声明委托并将具体回调方法作为参数传递给其他类或方法,实现简单的回调任务,但耦合度相对较高,处理一种类型的回调。接口回调通过定义接口来规范回调方法,并允许类实现多个接口处理复杂的回调场景,降低耦合度,提供更大的灵活性和可扩展性,但代码可能较为复杂。接口使得多态编程变得容易,允许通过接口引用来引用实现该接口的不同类的实例,实现运行时多态性。实现接口的类必须提供接口中定义的所有成员的实现。接口可以继承其他接口,继承的接口会包含父接口的成员,并可以在实现时提供所有父接口和当前接口的成员实现。
2023-08-14 12:30:39
183
原创 C#获取文件信息大全
比如我们网站需要上传文件,可以用扩展名称控制上传的类型,获取文件的大小来限制上传文件等。无论是使用`FileInfo`类、`File`类、`Directory`类还是`Path`类,C#提供了多种获取文件信息的方法,可以根据具体需求选择合适的方法来获取文件的属性、大小、时间等信息。更多信息大家可以参考官网。如果你要获取文件的扩展名或类型(MIME类型)等,可以使用`Path`[4]类的一些静态方法。除了`FileInfo`类,C#中的`File`[2]类也提供了获取文件信息的一些静态方法。
2023-08-11 12:45:08
1082
原创 每个.NET开发都应掌握的linq知识点
LINQ是C#的一个强大的特性,它为数据查询和操作提供了简洁、统一的语法,使得数据处理变得更加直观和灵活。LINQ提供了一种强大的、统一的数据查询和操作方式,可以帮助开发者更加高效地处理数据,提高代码的可读性和可维护性。掌握LINQ的基本查询操作,包括Where、Select、OrderBy、OrderByDescending、Take、Skip等,这些操作可以用于筛选、投影、排序和分页等操作。了解LINQ的延迟执行特性,即LINQ查询通常不会立即执行,而是在枚举查询结果时才进行实际的查询操作。
2023-08-07 12:41:53
117
原创 除了Copilot还有这些AI代码辅助工具
aixcoder支持多种编程语言,包括Java、Python、C++、Php、JavaScript、TypeScript、Go等,也支持多种编辑器,如IntelliJ IDEA、Eclipse、PyCharm、Android Studio、PhpStorm、WebStorm、Clion、sublime、Visual Studio Code等。最近牛逼的GitHub Copilot试用到期了,离开它还有点不习惯,基础的代码它基本可以帮你搞定,开发效率直接翻倍。还真有,小编本文介绍几种免费的代码智能辅助工具。
2023-08-03 12:36:03
1010
原创 每个.NET开发都应掌握C#泛型的知识点
C#泛型编程是.NET framework 2.0的新特征,它提高了代码安全性和代码重用的问题。C#泛型编程在C#是很重要的特性,建议.NET开发熟练掌握它的基本知识点,本文将介绍它的几个知识点,供大家参考。C# 4.0引入了接口的协变和逆变,使得泛型类型参数可以在接口中进行协变(`out`)或逆变(`in`)。泛型约束允许限制泛型参数的类型,以增加类型安全性和代码约束。泛型类型和方法允许在定义时不指定具体的类型,而是在使用时确定类型。泛型类可以继承其他泛型类或非泛型类,也可以实现泛型或非泛型接口。
2023-07-31 12:30:56
103
原创 如何学好C#语言?这些方法助你快速提升
C#是 Microsoft 公司开发的一种新型、高效的面向对象的编程语言,虽然出现的时间并不长,但是其易于学习、语法规范、程序严密的特点已经受到了很多企业和开发者的青睐。通过系统化的学习和不断的练习,在使用工具和框架的过程中,跟随最新技术发展趋势,参加技术相关的活动并且参与实际项目中的开发,就能够不断提高C#编程的技术水平。在C#编程方面,有一些网站和博客,比如 MSDN、Cnblogs、GitHub、C# Corner等,可以阅读和学习C#新技术的相关文章和文档。参与开源项目也是学习C#新技术的好方法。
2023-07-25 12:40:16
234
原创 C#代码重构的几个典型案例
前段时间小编检查同事代码,发现居然写的太复杂看不太懂,代码命名不规范,重复冗长代码一堆,这时候就可以通过重构来改进代码的质量。代码重构是提高代码质量和可维护性的关键过程,它旨在通过优化代码结构和设计来提高代码的可读性、可理解性和可扩展性。过于复杂的条件语句让后续开发者难以阅读代码,让代码出错的几率增大,并且增加了代码的维护难度。本文讲述了几个代码重构的案例,希望对大家的代码重构有所帮助。长的方法增加代码的难度,代码的可读性和维护性变差,并且不利于测试。重复代码不仅增加了代码量,还增加了维护的困难度。
2023-07-17 12:24:11
202
原创 特殊符号引发的bug,C#去除不可作为文件名的特殊符号
前段时间小编开发了一个控制台程序,把数据库中的数据取出来按照编码名称分别存储文件,存储文件之前检查是否存在当前文件,如果存在删除。开始小批量的数据还挺顺利的,当批量执行问题就来了,每次执行到一半时,创建的文件不增加反而变少了,经过日志捕捉才发现是字段里包含特殊符号惹的祸。小编是按照字段编码来当文件名称的,但是由于是比较老的数据,编码比较乱包含有特殊符号,造成创建文件失败,而且还删除了其它的文件。跳槽*.txt"`,输出的清理后的文件名是 `“公众号dotnet开发跳槽.txt”`。
2023-07-14 12:45:30
452
原创 .NET使用EF批量插入数据,一行代码性能飙升!
小编最近接到一个任务,批量获取内部网站用TXT生成的日志,在闲时把日志插入到MySql数据库做分析。为了快速开发小编选择了Entity Framework Core,很快开发完成了。测试数据不是很多,批量插入数据很快完成,效率很高。但是部署到线上问题来了,最开始也挺快,越到后面越慢,慢的无法接受。于是查询了一下官网和某度,只需加一句代码就可以让EF批量插入数据飙升。微软的解释:“AutoDetectChangesEnabled默认值为 true。
2023-07-10 12:35:42
570
原创 C#提高LINQ运行效率的PLINQ
这里有两个关键词,一个是“并行”,另一个是“扩展”,所谓并行是相对于程序顺序来说说的,LINQ是顺序执行的,而PLINQ的并行执行弥补了LINQ同步执行的效率,当然根据使用情况的不同来选择,比如数据量很小就体现不出PLINQ的优势了。如果查询不执行大量的计算,或者如果数据源较小,则 PLINQ 查询的速度可能比顺序 LINQ to Objects 查询的速度慢。首先来了解一下什么是Plinq,我们来看看官方的描述:并行 LINQ (PLINQ) 是语言集成查询 (LINQ) 模式的并行实现。
2023-07-05 12:35:36
376
原创 避坑:.NET内存泄露的几种情况
在实际开发中,应根据应用程序的特性和需求,仔细审查代码并确保正确的资源管理和释放,以避免内存泄漏问题的出现。在处理完数据后,通过将 largeData 设置为 null,释放对大型数组的引用,从而允许垃圾回收器回收该数组所占用的内存。可以在对象的生命周期结束时,手动调用事件的解注册方法或使用弱事件模式,以避免事件发布者持有订阅者的引用。示例:一个长时间运行的任务中,持有对大量对象的引用,但任务执行完毕后未释放这些对象的引用。示例:一个后台线程持续运行并持有对大量对象的引用,但这些对象在任务完成后不再需要。
2023-07-03 12:38:13
227
原创 盘点C#中感叹号“!“的作用
同上条一样在C# 8.0及更高版本中,感叹号还可以用于可空类型的解引用操作。当我们需要从可空类型中获取实际值时,可以使用感叹号进行解引用操作,以确保获取到的值不为空。通过熟练掌握感叹号的各种用法,程序员可以更好地利用C#语言的特性,编写出更清晰、更健的C#代码。通过在布尔表达式前面添加感叹号,我们可以将一个布尔值从"true"变为"false",或从"false"变为"true"。在C#编程语言中,感叹号"!小编在本文将带大家探讨感叹号在C#中的不同用法,帮助程序员更好地理解和运用这个小而重要的符号。
2023-06-30 12:29:34
1145
原创 C#12“实用”的新功能:类型的别名
类型的别名是C#12的一种比较“实用”的“新功能”。它可以让你在开发过程中使用 using 别名指令创建任何类型的别名,也可以为元组类型、数组类型、指针类型或其他不安全类型创建语义别名,这样可以通过类型知道当前参数的含义,降低错误率。之前的C#版本也支持类型别名,但是使用没有这么优雅
2023-06-20 17:30:00
970
原创 盘点C#最有价值的10个语法糖
以上是C#中最有价值的10个语法糖,它们提供了更强大、更灵活和更高效的编程工具,帮助开发者更轻松地编写清晰、简洁和可维护的代码。C#语言是世界最优雅的语言之一,深受广大程序员的喜欢,尤其是其中的一些语法糖。C#语言推出了许多有价值的语法糖,这些语法糖可以使代码更加简洁、易读和提高程序的运行效率。分部方法是一种特殊类型的方法,允许将方法的定义分割到多个部分中,其中一部分由开发者实现,另一部分由编译器生成。扩展方法允许我们向现有的类型添加新的方法,而无需修改原始类型的定义,提高了代码的可扩展性。
2023-06-15 12:40:37
725
原创 三种方法让.NET轻松实现Excel转PDF
前一段时间有网友问Excel转pdf怎么转pdf,小编帮他实现了一个,方法是使用EPPlus和PdfSharp组件实现,由于依赖OfficeOpenXml他也没有用上,后来小编又实现了二种不依赖OfficeOpenXml的方法。此方法跟Spire一样默认不支持中文,需要我们单独引用中文字库,方法GetChineseFont就是处理引用中文字库。标签作为表格的开始。此方法需要注意的是Spire默认不支持中文,需要我们单独引用中文字库,在代码的13行就是引用字库的地方,大家可以把字库拷贝到自己的项目引用。
2023-06-13 12:41:24
717
原创 .NET的8种JSON序列化反序列化工具供你选择
在.NET开发中,.NET的JSON序列化反序列化工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的序列化和反序列化工具,这些工具有的性能更加优秀,更加轻量等特征。ServiceStack.Text是一个功能丰富的JSON序列化和反序列化库,支持多种序列化和反序列化方式。优点:它生成的序列化数据尺寸小、序列化和反序列化速度快,同时具有跨语言支持,使得在不同平台和技术堆栈中的应用程序可以进行高效的数据交换和通信。优点:快速、简单的JSON序列化和反序列化库;
2023-06-09 12:38:27
336
原创 .NET使用System.Speech轻松读取文本
System.Speech是.NET框架的一部分,提供了语音识别和语音合成的功能。通过使用System.Speech命名空间中的类,开发人员可以在.NET应用程序中实现语音识别功能。在本文中,我将演示如何使用 System.Speech.NET,这是开发语音应用程序比较牛逼的内库。本文介绍了System.Speech的文字转语音功能,并用案例介绍了它的使用流程。System.Speech还有很多功能,比如语音识别、音频输入和输出控制等,篇幅有限这里就不在介绍,感兴趣可以到官网查阅API来了解它使用方法。
2023-06-05 12:25:38
590
.NET工程师笔试题高级
2023-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人