
学习笔记
文章平均质量分 60
攻城狮客栈
天地生人,有一人,当有一人之业;
人生在世,生一日,应尽一日之勤。
展开
-
偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处
错误场景:在使用FileStream对象打开一个文件,想读到缓存中。由于缓存大小为1KB,所以需要分次读入。但在使用FIleStream.Read()方法时,错误代码:byte[] sendBuf=new byte[m_nBlockSize];int nRead=readFile.Read(sendBuf, nOffset, m_nBlockSize);当nOffset=1时,总是直接抛出错误:偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处错误原因:没有看清楚.转载 2020-08-03 14:57:23 · 3154 阅读 · 0 评论 -
MD5、SHA256等Hash算法的实时计算
最近,在项目中,需要计算文件的hash值来对文件进行最终校验,在C#中,MD5、SHA256都是直接可用的。下面以MD5为例,一般来说,计算文件hash值时,是加载一个文件,然后来读取并计算,如下:MD5 md = MD5.Create();buffer = Encoding.ASCII.GetBytes("abc");//这里abc表示从文件中读取的内容md.TransformBl...原创 2019-10-14 10:29:56 · 2236 阅读 · 0 评论 -
WinForm加载时各事件的顺序 .
WinForm加载时各事件的顺序真是没有找到好的介绍,那就自己来试吧。记录在这里,将来还会继续更新。 public partial class TestForm : Form { public TestForm() { Console.WriteLine(1); InitializeCompon...转载 2019-03-25 13:53:14 · 1437 阅读 · 0 评论 -
C#的委托使用(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。对于委托的实现原理若不明白,可参考C#action和func的使用 形象理解。1.委托的定义与使用1. delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。 例:...转载 2019-03-27 14:24:55 · 308 阅读 · 0 评论 -
C#多线程和线程池
看过很多文章,很全很不错的一篇,文章篇幅较大,所以这里给出原文地址,具体文章参考C#多线程和线程池转载 2019-03-27 14:37:51 · 510 阅读 · 0 评论 -
C# Socket网络编程精华篇
我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念:TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用。http协议在应用层运行。 02,传输层(Tanspot):传输层包括UDP和...原创 2019-03-27 14:51:25 · 273 阅读 · 0 评论 -
C# GDI+绘图(二)进阶---Pen/Brush以及坐标轴平移和旋转等
上一篇C# GDI+绘图(一)GDI+介绍及基础,我们介绍了,GDI+的基础,这篇我们对其进阶内容进行学习,分别为Pen/Brush以及坐标轴操作,1.首先,我们来介绍Pen的详细用法:Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.我们可以用P...原创 2019-04-22 11:55:55 · 6926 阅读 · 0 评论 -
C# GDI+绘图(一)GDI+介绍及基础
最近,项目中,有一块比较发杂的网格,并在网格上绘有各种颜色和文本,在Dev库中并为找到能实现这种功能的现有或可以二次开发的控件,因此,涉及到GDI+绘图这块陌生的领域。下面即时我在本次学习过程中的笔记,本次内容一共分为4篇,分别都有各自的代码或工程文件提供,有需要的朋友可以下载。C# GDI+绘图(一) GDI+介绍及基础C# GDI+绘图(二)进阶---Pen/Brush以及坐标轴平移和...原创 2019-04-22 12:00:46 · 10592 阅读 · 0 评论 -
C# GDI+绘图(三)GDI+实现QQ截图类似功能
前两篇,介绍了GDI+的一些基本用法,现在我们来试着实现一个模仿qq截图的功能来加深一下对GDI+的理解和运用。首先,我们介绍一下思路: 聊天窗体上有一个截图按钮,点击按钮后,程序将整个屏幕画在一个新的全屏窗体上,然后显示这个窗体.因为是全屏的窗体,并且隐藏了菜单栏、工具栏等,所以在我们看来就好像是一个桌面的截图,然后在这个新窗体上画矩形,最后保存矩形中的内容并显示在原来的聊天窗体中....原创 2019-04-22 14:41:20 · 1950 阅读 · 0 评论 -
C# GDI+绘图(四)实现网格绘制,并填充相应的表格内容
这是为了实现在项目中的功能实现的一个Demo,在完成这个Demo后,我将其直接移植到了项目中,进行数据合并后,一切完美运行,废话不多说,直接上图:这里给出部分主要代码,构造函数:public uc_layout() { InitializeComponent(); InitializeDrawResour...原创 2019-04-22 15:39:30 · 7471 阅读 · 0 评论 -
SQL中in和not in在LINQ中的写法
1.主要是借住contains和where完成嵌套//SQL中的in和not in语法对应的LINQ写法 //相当于查询语句:select * from listAll p where p.name not in(select f.name from listFind) var a = (from p in listAll where !(from f in list...原创 2019-03-21 13:53:41 · 2178 阅读 · 0 评论 -
linq中left join和inner join的正确用法
之前一直分不清,left join 在linq中应该如何正确的表述,现在决定写篇帖子来记录下来,也许会对你有帮助。1.inner join为何先说这个呢,因为,如果你不是很会linq,那么你写出来的linq应该是这种形式的,先看代码:var query = from a in db.Set<BsWorkFormList>().Undeleted(a => a.BsD...原创 2019-03-21 13:09:17 · 6665 阅读 · 0 评论 -
c# 自定义扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 下面的示例为String添加判断输入的string是否邮箱格式的功能。using System.Text.RegularExpressions;namespace Extension_Method{ /...原创 2019-03-08 11:08:30 · 721 阅读 · 0 评论 -
C#中抽象方法与虚方法的区别
一、抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static.抽象方法如下示:public abstract class People //声明一个抽象类{ public abstract void study(); //抽象方法只能定义在抽象类中。}public class Student:People //继承抽象类...原创 2019-03-08 09:25:14 · 199 阅读 · 0 评论 -
Unknown column 'Extent1.Discriminator' in 'field list'
在使用entityframework的时候经常会出现Unknown column 'Extent1.Discriminator' in 'field list'这样的错误这是由于在dbmodel在被继承后添加了部分属性造成在数据库表中没有发现造成的需要在继承的类上标记[NotMapped]这样就解决了本文转载自 https://blog.csdn.net...转载 2018-07-02 16:43:28 · 1287 阅读 · 0 评论 -
C# 创建已实例化类的副本类
C# 中对象间都是以引用形式存在的,所以传统的用=赋值,只是给新对象赋值了对象地址,并未创建新的对象。例如:public class A { public int id { get; set; } public string name { get; set; } }实例化一个类A,A a=new A();a.id=1;...原创 2018-05-04 12:52:12 · 1062 阅读 · 1 评论 -
C#由Dictionary赋值引发的对引用类型使用的思考
最近,项目中用到dictionary<string,object>格式来处理数据,当前有一个字典resultData,用来返回页面的所有值,后续对这个字典进行了增加操作,如图:并最终返回页面。由于我在另外一个页面需要用到第一步获取到的resultData值,因此,我进行了如下操作Dictionary<string,object> temp=resu...原创 2018-04-25 16:08:09 · 3073 阅读 · 2 评论 -
vs更改resources之后,产生新的resources1文件
1. 卸载项目2. 编辑项目文件3. 搜索<LastGenOutput>resources1.Designer.cs</LastGenOutput>4.更改为<LastGenOutput>resources.Designer.cs</LastGenOutput>5. 删除resources.designer.cs和resources1....原创 2018-04-25 15:01:47 · 1846 阅读 · 0 评论 -
C# 继承类中(父类与子类)构造函数的调用顺序
1.实例化父类时,可以通过new子类来实例化父类,执行构造函数的顺序为:先执行父类的构造函数,再执行子类的构造函数。2.实例化子类时,只可以new子类,执行顺序同上。3.父类实例化后,只能执行父类的方法,获得父类的属性等。4.实例化子类,可同时执行子类和父类的方法和属性,如同名方法,则执行子类的方法。public class A { public A(st...原创 2019-03-08 10:25:09 · 7938 阅读 · 0 评论 -
C#对象克隆介绍
浅拷贝和深拷贝有两种对象克隆的方法:浅拷贝和深拷贝。浅拷贝只是复制引用,而不会复制引用的对象。深拷贝会复制引用的对象。因此,原始对象中的引用和浅拷贝对象中的同一个引用都指向同一个对象。而深拷贝的对象包含了对象的一切直接或间接的引用。参看维基百科(http://en.wikipedia.org/wiki/Object_copy)来获得更多解释。心静禅定ingIt is my deci...转载 2019-03-08 10:31:50 · 1620 阅读 · 0 评论 -
对象克隆(C# 快速高效率复制对象另一种方式 表达式树)
1、需求在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍。比如: public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }...转载 2019-03-08 10:37:41 · 374 阅读 · 0 评论 -
list 去重
Enumerable.Distinct 方法是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组、集合中的重复元素,还可以自定义去重的规则。有两个重载方法:// // 摘要: // 通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。 // // 参数: ...原创 2019-03-08 10:59:42 · 165 阅读 · 0 评论 -
C#中out和ref之间的区别
首先:两者都是按地址传递的,使用后都将改变原来参数的数值。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。refref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的...原创 2019-03-08 09:48:27 · 122 阅读 · 0 评论