![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
语法
破浪征程
我走过山时,山不说话
我路过海时,海不说话
小毛驴滴滴答答
倚天剑伴我走天涯。
大家都说我因为爱着杨过大侠
才在峨嵋山上出了家
其实我只是爱上了峨嵋山上的云和霞
像极了十六岁那年的烟花
展开
-
LINQ学习记录
如果源序列中存在元素通过了指定谓词中的测试,则为。如果源序列中的每个元素都通过指定谓词中的测试,如果源序列包含任何元素,则为。原创 2024-03-27 20:12:06 · 214 阅读 · 0 评论 -
.net 8 使用学习小记
这个实现使用了双重检查锁定(double-checked locking),以确保在多线程环境下也能高效安全地创建单例。是为了避免在单例已经被创建后的每次调用中都进行锁定,而内部的检查则确保了即使在多线程情况下只有一个实例被创建。使用代码优化(复合分配)原创 2024-03-20 19:57:08 · 394 阅读 · 0 评论 -
C# 中的接口
在C#中使用interface关键字来定义接口,例如。原创 2024-01-26 14:43:29 · 609 阅读 · 0 评论 -
关于C#中的HashSet<T>与List<T>
表示可通过索引访问的对象的强类型列表。元素可重复,是有序列表,根据调用add的时间先后进行排序。例如有100个元素,删除掉下标99的元素后,无法再通过下标99访问数据。HashSet存储数据时将数据通过散列函数直接映射到地址,所有取值时可以直接取到,时间复杂度为O(1)。List检索时需要一个个的进行值比较,最多需要比较到数组末尾,时间复杂度为O(n),n为元素个数。这个集合的元素是无须列表,同时元素不能重复。当数据量较小时,list的增加删除性能有优势,当数据量较大,则hashset的性能有巨大优势。原创 2024-01-23 18:28:48 · 663 阅读 · 0 评论 -
关于C#中的Select与SelectMany方法
这里的a就是petOwner集合本身,b就是a.Pets生成的新的集合。将序列中的每个元素投影到新表单。并将结果序列合并为一个序列。将序列的每个元素投影到。原创 2024-01-19 15:37:13 · 1267 阅读 · 0 评论 -
关于C#中的LINQ的延迟执行
Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行运行结果:可以看到,执行结果也验证上述的说明,查询创建后,并没有马上执行,而是在遍历对象时才执行,否则第二个遍历不会打印出40.如果在查询后面添加ToList等转换符,则会立即执行,如。原创 2024-01-19 12:21:23 · 581 阅读 · 2 评论 -
关于C#中Monitor的wait/pulse的理解
首先线程A通过wait方法释放锁,让线程B获取锁后成功开始执行,线程A进入等待队列,线程B执行过程中不再需要锁定对象后,则会调用pulse发送释放锁的信号,让收到信号的线程A从等待队列进入就绪队列,当线程B执行完成释放锁后,线程A重新获得锁,继续执行。可以看到在线程B中发出Pulse信号后,线程A收到信号,进入就绪队列,此时线程B还没有释放锁,直到线程完成3s等待后,线程A才重新获取锁,wait(object)才返回。说明1:这里我们在线程B中,并没有发出pulse信号,线程也没有无限期等待。原创 2024-01-16 15:46:53 · 549 阅读 · 0 评论 -
关于C#中的async/await的理解
在大多数情况下,异步操作并不会创建新的线程,而是通过利用I/O完成端口或其他异步机制来实现异步操作。这样可以避免创建额外的线程,提高程序的性能和资源利用率。1. 使用async标记的方法被认为是一个异步方法,如果不使用await关键字,调用跟普通方法没有区别。当被await的异步操作完成后,异步方法会恢复执行,并返回结果。3.使用task.result获取执行结果,会阻塞调用线程。异步方法会暂时挂起,让出当前线程的控制权,而不会阻塞线程。2.当使用await关键字时,原创 2024-01-16 11:26:54 · 525 阅读 · 0 评论 -
C# 中的abstract和virtual
C# 关键字abstract 和virtual原创 2023-03-06 18:34:13 · 664 阅读 · 0 评论 -
.net 知识拾遗
.net知识点拾遗,长期更新原创 2022-10-25 14:43:08 · 205 阅读 · 0 评论 -
C# 对字符串判空方法
C# 判断字符串为空原创 2022-09-09 15:59:57 · 485 阅读 · 0 评论 -
.NET 6 顶级语句小记
原创 2022-05-19 20:51:46 · 572 阅读 · 0 评论 -
C# byte[]数组的读取和写入文件
C# byte[]数组的读取和写入文件转载 2022-02-25 01:05:28 · 7109 阅读 · 0 评论 -
The type or namespace name ‘****‘ could not be found (are you missing a using directive or an assemb
引用的类库目标框架不能大于当前项目的目标框架,修改一致后即可正确编译参考文章:https://blog.csdn.net/weixin_34254823/article/details/90098028原创 2021-02-23 17:08:56 · 9938 阅读 · 0 评论 -
关于C#中的接口和抽象类的知识点小记
1.抽象类不能被实例化2.类继承接口必须提供实现C#虚基类继承与接口的区别类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { // .......... } class Cat : object { // .......... }C#中所有的类都是默认由object类派生来的,显示指定或者省略效果是一样的,所以上面的两个例子是完全相同的。 C#中类包括:抽象类、密封类、非抽象类 abstract转载 2021-01-28 11:42:46 · 161 阅读 · 0 评论 -
c#中数组赋值方法
C#中数组复制有多种方法数组间的复制,int[] pins = {9,3,4,9};int [] alias = pins;这里出了错误,也是错误的根源,以上代码并没有出错,但是根本不是复制,因为pins和alias都是引用,存在于堆栈中,而数据9,3,4,3是一个int对象存在于堆中,int [] alias = pins;只不过是创建另一个引用,alias和pins同时指向{9,3,4,3},当修改其中一个引用的时候,势必影响另一个。复制的意思是新建一个和被复制对象一样的对象,在C#语言...转载 2020-12-22 15:53:51 · 9510 阅读 · 0 评论 -
缩放时使用插值模式控制图像质量
Graphics 对象的插值模式会影响 GDI+ 缩放(拉伸和收缩)图像的方式。 InterpolationMode 枚举定义了几种插值模式,其中一些模式显示在下面的列表中: NearestNeighbor Bilinear HighQualityBilinear Bicubic HighQualityBicubic 若要拉伸图像,原始图像中的每个像素都必须映射为较大图像中的一组像素。 若要收缩图像,必须将原始图像中成组的像素映射为较小图像中单个的像素。 执原创 2020-12-09 11:35:02 · 895 阅读 · 0 评论 -
C# 创建大图的缩略图
缩略图像是图像的小版本。 可通过调用 Image 对象的 GetThumbnailImage 方法创建缩略图像。下面的示例从 JPG 文件构造 Image 对象。 原始图像的宽度为 640 像素,高度为 479 像素。 该代码创建宽度和高度均为 100 像素的缩略图像。下面的插图显示此缩略图像。public bool ThumbnailCallback() { return true; } private void GetTh.原创 2020-12-09 11:32:48 · 338 阅读 · 0 评论 -
C#中使用DrawImage避免自动缩放改善性能
在绘制图片时,当我将四张小图贴在一张大图的四个角时,当我使用drawimage(Image,point)绘制时,发现图片被放大了,当我指定绘制区域后正常了。具体原因如下(参考MSDN):在绘制图像时,GDI+ 可能会自动缩放图像,这将会导致性能降低。 另外,也可以通过将目标矩形的尺寸传递给 DrawImage 方法来控制图像的缩放。例如,以下对 DrawImage 方法的调用指定左上角的位置为 (50, 30),但是未指定目标矩形。e.Graphics.DrawImage(image, 50.原创 2020-12-09 11:30:39 · 3452 阅读 · 0 评论 -
Lambda表达式select()和where()的区别
新建一个控制台程序ConsoleApplication11、where()用法:必须加条件,且返回对象结果。 static void Main(string[] args) { string[] arrays={"asd","abc","bbb","ccc"}; var results = arrays.Where(a=>a.Contains("b"));//必须加条件,返回对象foreach(var da in results ){ ...转载 2020-10-10 10:15:46 · 1634 阅读 · 0 评论 -
使用json.net格式化json后,提取节点信息
{ "code": 1, "msg": "", "pagecount": 1, "data": [ { "classname": "终极一班", "username": "贺老师", "valid": "1", } ]}若要提取username,由于data节点是数组类型。需要先转化为JArray类型提取即可,当然也可以...原创 2020-09-07 17:58:02 · 268 阅读 · 0 评论 -
C#报错“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke“小结
原因:调用窗体时,注册了事件。关闭调用窗体后,没有注销事件。1.手动注册的事件,需要在窗体关闭时手动释放掉,如下private void QuickResponseForm_Load(object sender, EventArgs e) { //添加事件 label_start.MouseClick += StartQuickAnswer; }private void QuickResponseForm_FormCl...原创 2020-08-26 16:36:15 · 2515 阅读 · 0 评论 -
C#中$的用法
C#中$的用法:是为了替代string.format();原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题,$""是为了替代string.format(),可以把字符串中的C#变量{}包含起来达到识别C#变量的目的$"{id}";也支持表达式,使用$"{(你的表达式)}" var k = "a"; var a0 = "User"; var a1 = "Id"; var a2 = 5; var ccc = string.Format("select * f转载 2020-07-20 17:52:40 · 334 阅读 · 0 评论