自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(282)
  • 问答 (1)
  • 收藏
  • 关注

原创 C# 语法糖

是一种不断进化的编程语言,随着时间的推移,微软为其添加了许多语法糖,以简化代码和提高开发效率。扩展方法允许你向现有类型“添加”方法,而无需修改其源代码或创建新的派生类型。异步编程允许你以同步代码的形式编写异步逻辑,简化了异步任务的编写和阅读。这允许编译器根据赋值推断变量的类型,减少了冗长的类型声明。(语言集成查询)提供了一种声明性的数据查询和操作方法。这允许你创建匿名类型的实例,而不需要定义具体的类型。版本的更新,未来可能会有更多的语法糖被引入。表达式提供了一种简洁的方式来编写匿名函数。

2024-05-25 19:39:29 416

原创 C# 数据绑定 未完

上述代码效果为点击ButtonLable的值++

2024-05-25 18:28:47 265

原创 C# 异步编程

Task。

2024-04-23 18:55:44 754

原创 C# AutoResetEvent

主线程等待一段时间以确保 DoWork 方法已经开始执行并阻塞,然后调用。中的一个同步原语,用于在线程之间传递信号。在释放一个等待的线程后会立即重置,这意味着下一个调用。方法时,它会阻塞,直到另一个线程调用。将自动重置其状态,这意味着下一个调用。然后,我们启动了一个新线程来执行。将返回,线程将继续执行并输出消息。方法的情况下会保持其状态(无论是。在上面的示例中,我们创建了一个。在这个方法中,线程调用。实例并将其初始状态设置为。的线程将再次阻塞,直到。的线程将再次阻塞,直到。

2024-04-22 21:23:52 780

原创 C# 多线程

线程是能独立运行的最小单位,也是程序能够并发执行的一段指令序列线程是进程的一部分,一个进程可以包含多个线程,这些线程共享进程的资源进程有入口线程,可以创建更多的线程一个线程的创建和销毁是十分耗时的,开销很大当我们需要执行一个小任务时,直接找线程池要一个,做完再把线程还给他避免频繁地创建和销毁线程,从而减少了线程创建和销毁的开销,提高了系统的性能和效率多个线程访问共享资源时,对共享资源的访问不会导致数据不一致或不可预期的结果i < total;

2024-04-21 22:10:37 763

原创 C# lock

是一个关键字,用于实现同步,确保当一个线程正在执行某个代码块时,其他线程将等待直到该线程完成该代码块的执行。这是通过在代码块周围放置一个锁来实现的,这个锁是一个独特的对象,其他线程在尝试进入同样的代码块时必须获得这个锁。如果没有,线程会获得锁,执行代码块,然后在离开代码块时释放锁。锁定的代码块应该尽可能的短,只包含必要的操作,以减少锁定的持续时间,避免造成其他线程不必要的等待。应避免在持有锁时调用外部方法,尤其是那些可能同样会锁定其他资源的方法,因为这可能导致死锁。这里有一个简单的例子,展示了如何在。

2024-04-21 20:23:18 518

原创 C# ToString

你可以创建自定义数字格式字符串,这种字符串由一个或多个自定义数字说明符组成,用于定义设置数值数据格式的方式。自定义数字格式字符串是任何不属于 标准数字格式字符串的格式字符串。

2024-04-17 17:26:40 452

原创 C# winForm 异步问题 线程 从不同线程更行UI控件

目前使用简单粗暴的方法。

2024-04-16 15:38:14 574

原创 C# BitConverter

返回的字符串中每个字节都被表示为一个两位的十六进制数,即使该字节的高四位都是零也会这样表示。在大端字节序中,最重要的字节(高位字节)存储在最低的内存地址处,而最不重要的字节(低位字节)则存储在最高的内存地址处。在小端字节序中,最不重要的字节(低位字节)存储在最低的内存地址处,而最重要的字节(高位字节)则存储在最高的内存地址处。等: 这些方法用于从字节数组中的指定位置开始,将特定数量的字节转换为相应的整数或浮点数类型。等: 从字节数组的指定位置开始,将指定数量的字节转换回基本数据类型。

2024-04-03 13:45:41 2288

原创 C# 关于Encoding编码 举例UTF8

在UTF-8编码中,一个字符可能由一个或多个字节组成。每个字节的前几位用于指示该字符需要多少字节来表示。具体来说,UTF-8编码使用以下规则:如果一个字节的最高位是0,那么它表示一个ASCII字符,并且该字节就是该字符的完整表示。如果一个字节以110开头,它表示这是一个两字节字符的第一个字节。如果一个字节以1110开头,它表示这是一个三字节字符的第一个字节。如果一个字节以11110开头,它表示这是一个四字节字符的第一个字节。在你提供的byte[] bb(二进制表示为11100100)是以。

2024-04-03 13:35:26 644

原创 C# OpenFileDialog

它提供了一个标准的用户界面,让用户能够浏览文件夹、查看文件列表以及选择一个或多个文件。在这个例子中,我们设置了一个过滤器来允许用户选择所有类型的文件,或者仅选择文本文件。这通常是在设计视图中通过双击按钮来完成的,或者在代码中手动添加事件处理程序。当用户点击这个按钮时,就会打开文件选择对话框。然后,你可以在窗体的某个事件(如按钮点击事件)中调用。以下是一个简单的示例,展示了如何在按钮点击事件中使用。,表示用户只能选择一个文件。,然后我们可以获取用户选择的文件路径。属性包含了用户选择的文件的完整路径。

2024-04-03 12:06:53 401

原创 C# 委托与事件 终章

希望一个类的某些成员在发生变化时能被外界观测到。标准.Net事件模式。

2024-04-02 22:29:38 502

原创 C# 静态方法的小芝士

众嗦粥汁,静态方法只能调用静态方法和静态成员。而非静态方法享受世界。所在类的实例然后通过实例调用。是静态的,调用非静态的。

2024-04-02 18:47:20 312

原创 C# lambda表达式 匿名函数

匿名函数在C#中非常有用,特别是在需要快速定义一个小型函数,而不需要完整方法定义的情况下。它们在LINQ查询、事件处理、异步编程等场景中非常常见。/*});*/在C#中,你提供的两个代码片段定义了一个接受两个int类型参数并返回一个double类型结果的Func委托。虽然这两个代码片段在功能上完全相同,但它们在语法和可读性方面有一些细微的差别。第一个代码片段在这个片段中,rule是一个类型的变量,它直接通过lambda表达式进行初始化。这种语法在C#中非常常见,因为它简洁且直接。这里,

2024-04-02 18:01:16 1444

原创 C# 访问修饰符 默认

对于嵌套类型(即定义在其他类型内部的类型),其默认访问修饰符通常是。中,如果没有显式指定访问修饰符,大多数类型成员(如字段、属性、方法等)的默认访问级别是。这意味着同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员。:对于命名空间下的元素(如类、结构、枚举等),如果没有明确指定访问修饰符,则默认是。这确保了代码的封装性和安全性,使得成员只能被需要访问它们的代码所访问。:类中的字段、属性和方法如果没有显式指定访问修饰符,则默认是。,而类型本身(如类、结构、接口等)的默认访问级别是。

2024-04-02 11:48:26 670

原创 C# invoke 记得学反射再来

方法的第一个参数是要在其上调用方法的对象实例(如果方法是静态的,则为。它用于在特定的线程或上下文中执行方法,或者动态地调用方法。中,委托是一种特殊的类型,它表示对方法的引用。这两个方法允许你将方法调用封送到创建控件的线程(通常是。元素,你会遇到线程安全问题。的方法,其签名与委托匹配。),后面的参数是要传递给方法的参数数组。方法用于动态地调用类型的方法。在上面的例子中,我们定义了一个名为。在这个例子中,我们使用反射获取了。方法动态地调用了这个方法。方法来调用其引用的方法。的委托类型,并创建了一个名为。

2024-04-02 11:32:53 619

原创 C# 委托与事件 深入

他的一切都是固定下来的,但是他的计算方法是多变的,因为我们可以用委托来改变传入的方法。委托就是我给你原材料,你给我我要的成品,至于你拿我原材料干啥,我不是深究。于是,有一个问题,为什么我不直接调用。如此简单的应用就是函数指针的意思。的情况下让他有了更多的功能。这是一个简单的委托样例。这就是委托最大的好处,

2024-04-01 01:16:12 398

原创 C# 文件

例如,创建一个 对象 来读取名为 的文件:注意和的匹配问题 枚举定义了各种打开文件的方法。 枚举的成员有::打开一个已有的文件,并将光标放置在文件的末尾。如果文件不存在,则创建文件。:创建一个新的文件。如果文件已存在,则删除旧文件,然后创建新文件。:指定操作系统应创建一个新的文件。如果文件已存在,则抛出异常。:打开一个已有的文件。如果文件不存在,则抛出异常。:指定操作系统应打开一个已有的文件。如果文件不存在,则用指定的名称创建一个新的文件打开。:打开一个已有的文件,文件一旦打开,就将被截断

2024-03-31 23:04:57 1075

原创 C# 字节数组 byte[] 关于byte的小寄巧 以及Encoding和BitConverter

先是小错误 之 ToString然后是怎么办使用UTF-8编码使用ASCII编码使用其他编码未知编码注意小demo下一个demo关于发送端的(发送新行)手搓bug编码之搓`ascii encodeing`评价为不如`BitConverter`一根

2024-03-31 12:30:55 836

原创 C# serialPort

中用于串行通信的类。它提供了一组属性和方法,用于配置串行端口、读取和写入数据,以及处理串行通信中的事件。确保你有正确的串行端口名称,以及正确的配置参数(波特率、数据位、校验位、停止位等)。时,应该准备好处理可能发生的异常,例如当尝试打开不存在的端口或发生I/O错误时。类提供了几个事件,允许你在特定情况下执行代码,例如当接收到数据时。在多线程环境中,处理串行端口事件时要小心线程安全问题。块确保了即使发生异常,串行端口也会被正确关闭。对象后,你需要打开串行端口以开始通信。在这个例子中,当接收到数据时,

2024-03-30 23:24:26 827

原创 C# comboBox

是一个常用的控件,它允许用户从下拉列表中选择一个项目,或者输入自定义的文本(取决于。控件通常用于显示一系列固定的选项,让用户能够快速地从中选择一个。: 获取或设置当前选定项的索引。如果没有选定任何项,则为。的下拉样式(例如,简单下拉列表或可编辑下拉列表)。: 获取或设置一个值,该值指示项是否按字母顺序排序。中查找与指定字符串完全匹配的项的索引。: 获取或设置编辑区域中的文本。中查找指定字符串的项的索引。: 获取或设置当前选定的项。

2024-03-30 23:21:08 913

原创 C# EventHander

通过这个简易委托来生成一个事件,比如鼠标点击,然后这个事件发生了(鼠标按了),就会执行先前绑定到这个事件上的委托,委托可以广播。

2024-03-30 03:23:08 1434

原创 C# 委托与事件 浅尝

上文简单的实现了一次事件的发生,然后调动了因为此事发生而做出的反应(委托)

2024-03-30 00:50:06 459

原创 串口小芝士

调试时总是会遇到各种各样的接口,串口,UART,USB,COM,TTL,通信协议,数据帧,波特率,各种各样的转换板,似懂非懂,在此对UART调试碰到的相关概念做一个梳理。相关基础概念:同一时刻只能传输一个数据位的数据,比并行通信的传输距离远,抗干扰能力强:同一时刻可以传输多个数据位的数据串口、COM口、UART口它是指一种物理接口(硬件实体)。它一般有9针和25针的,即DB9和DB25。以针引出来的叫公头,孔引出来的叫母头。TTL、RS-232、RS-485则是逻辑电平0和1的不同表示标准。

2024-03-29 17:34:19 700

原创 C# 到异常处理 暂时告一段落 开始窗体的学习

Windows Forms 数据绑定:https://docs.microsoft.com/en-us/dotnet/desktop/winforms/data-binding/?Windows Forms 控件:https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/?Windows Forms 教程和概述:https://docs.microsoft.com/en-us/dotnet/desktop/winforms/?

2024-03-29 12:28:15 495

原创 C# 预处理指令 #

define 它用于定义一系列成为符号的字符。#undef 它用于取消定义符号。#if 它用于测试符号是否为真。#else 它用于创建复合条件指令,与 #if 一起使用。#elif 它用于创建复合条件指令。#endif 指定一个条件指令的结束。#line 它可以让您修改编译器的行数以及(可选地)输出错误和警告的文件名。#error 它允许从代码的指定位置生成一个错误。#warning 它允许从代码的指定位置生成一级警告。

2024-03-27 22:19:29 321

原创 C# 接口 interface

在C#中,接口(Interface)是一种引用类型,它定义了一组方法的契约,但不包含实现。接口允许不同的类实现相同的方法集,从而。接口在C#编程中扮演着非常重要的角色,它们是实现多态性的关键方式之一,同时也是实现代码解耦和增强代码可维护性的重要工具。

2024-03-27 17:10:43 672

原创 C# 值类型和引用类型

意味着在内存里我讲b的所有复制了一份(复制到。

2024-03-27 16:45:17 416

原创 C# 运算符重载 之前的小总结

中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义。中大多数运算符的功能。

2024-03-27 15:07:45 464

原创 C# this

的参数,这个参数是类的当前实例。虽然通常不需要显式使用它,但在某些情况下,如扩展方法或委托中,你可能会看到它的使用。是一个关键字,它指代当前类的实例。当你在类的成员方法或属性中使用。,可以实现链式调用。这在构建器模式或配置类的上下文中特别有用。当类的成员变量和方法的局部变量具有相同的名称时,可以使用。也可以用于调用其他构造函数(称为构造函数链)。中,类的非静态方法实际上是隐式地接收一个名为。时,你实际上是在引用当前类的当前实例。一样能一直调用,这样不用打很多次。在类的某些方法中返回。

2024-03-27 14:52:40 551

原创 C# var

可以使代码更简洁,但在某些情况下,它可能会降低代码的可读性。特别是当变量的类型不是从上下文中显而易见时,使用明确的类型声明可能会更好。这可能导致未预期的行为,特别是在大型项目中。时,编译器会根据初始化表达式自动推断变量的类型。这有助于减少代码的冗余,并使得代码更简洁。是一个有用的工具,但应该谨慎使用,确保它不会降低代码的可读性或引入潜在的问题。编译器仍然会确保类型正确,并在必要时进行类型转换或引发错误。:如果你在后续的代码中更改了初始化表达式的类型,那么所有使用该。:你不能在类的字段或属性声明中使用。

2024-03-27 13:43:21 660

原创 C# get set 访问器

你可以在 set 访问器中添加验证逻辑,比如检查新值是否满足某些条件,或者在赋值前对新值进行转换。访问器会被调用,并返回属性的值。你可以在其中添加任何你需要的逻辑,比如计算属性的值,或者返回缓存的值等。)的关键词,它们用于定义属性的读取和写入行为。属性提供了一种比公共字段更灵活和可控的方式来访问类的数据。限制对属性的访问,比如只允许读取不允许写入,或者只允许在特定条件下进行访问。通过属性,你可以隐藏字段的实际名称和类型,只暴露一个清晰的接口给类的使用者。访问器中根据其他字段的值计算属性的值。

2024-03-26 21:28:03 646

原创 C# 多态 派生类 abstract virtual new

基类中必须有一个具有相同签名(即相同的名称、参数列表和返回类型)的虚方法或抽象方法。派生类继承自基类:包含。

2024-03-22 00:42:04 718

原创 C# 类的操作

静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取。静态变量可在成员函数或类的定义外部进行初始化。关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数。类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行。构造函数的名称与类的名称完全相同,它没有任何返回类型。

2024-03-22 00:24:03 478

原创 C# 类 结构体

不管是C#的类还是结构体,他们的前面也要。

2024-03-22 00:15:35 1321

原创 静态方法 static foo()

而在Python 3中,如果一个类的方法不需要self参数,不再需要声明为静态方法,但是这样的话只能通过类去调用这个方法,如果使用实例调用这个方法会引发异常。但通常建议通过类名来使用静态方法,因为静态方法只要定义了类,不必建立类的实例就可使用。在处理大量功能模块和多个代码文件时,静态方法能够组织不同的方法为一个单独的类,避免在不同程序文件中查找函数的麻烦。总之,静态方法因其独特的特性和优势,在编程中扮演着重要的角色,特别是在提高代码效率、可维护性和复用性方面。这些方法属于类本身,而不是类的某个具体对象。

2024-03-21 20:23:27 325

原创 C# 数组

声明一个数组不会在内存中初始化数组。当初始化数组变量时,您可以赋值给数组。数组是一个引用类型,所以您需要使用 new 关键字来创建数组的实例。

2024-03-21 19:01:22 477

原创 C# 可空类型(Nullable)int? a = null;

【代码】C# 可空类型(Nullable)int?a = null;

2024-03-21 18:47:35 129

原创 C# 方法的传参

【代码】C# 方法的传参。

2024-03-21 18:33:34 344

原创 C# 封装

访问修饰符允许在本类,派生类或者包含该类的程序集中访问。这也被用于实现继承。

2024-03-21 17:21:35 307

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除