C#
文章平均质量分 62
雍王爷
放下布袋、何等自在
展开
-
C#中的InitializeComponent()方法
在每一个窗体生成的时候,都会针对于当前的窗体定义InitializeComponent()方法,该方法实际上是由系统生成的对于窗体界面的定义方法。//位于.cs文件之中的InitializeComponent()方法public Form011() { InitializeComponent();} 在每一个Form文件建立后,都会同时产转载 2016-06-19 11:12:40 · 21361 阅读 · 1 评论 -
C#基础之unsafe code(不安全代码)
1.为何要有unsafe 也许是为了实现CLR类型安全的目标吧,默认情况下,C#没有提供指针的使用算法,但是有些情况下也可能需要指针这样直接访问内存的东西(虽然目前我还没有用过),但是有时候程序员非常清楚程序的运行状况,需要使用指针直接访问内存以便于提高性能或者调试、监控程序运行的内存的使用状况,以便于采取相应的措施。还有一些情况是当我们需要调用外面DLL中的函数又不能使用DllIm转载 2017-04-18 11:20:22 · 3173 阅读 · 1 评论 -
C#中dll调用方法
一、 DLL与应用程序动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现。动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其转载 2017-04-28 17:02:33 · 991 阅读 · 0 评论 -
C#学习之IntPtr类型
C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在您调用的API函数中一定有类似窗体句柄这样的参数,那么当您声明这个函数时,您应该将它显式地声明为IntPtr类型。 例如,在一个C#程序中调用Win32API mciSendString函数控制光盘驱动转载 2017-04-18 12:20:22 · 24197 阅读 · 2 评论 -
C#从三通道图像数据流转到HObject
用相机SDK采图的话很多时候得到的是一个数据流(byte[])或者指针IntPtr,单通道转换gen_image1还比较方便,三通道gen_image3发现它要三个颜色分量的指针,头大,这是个比较简单呆板的转换方法;下面进入正题。 //命名空间 using System; using System.Drawing; using System.IO; using Syst转载 2017-04-18 13:49:40 · 6627 阅读 · 0 评论 -
c#学习之??和?分别代表的意思
1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:string str=null; 是正确的,int i=null; 编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateTime? 表示可为空的时间。T? 其实是System.Nul转载 2017-04-14 16:23:15 · 255 阅读 · 0 评论 -
C#学习之time控件和timer_tick事件
Timer控件:Timer控件只有绑定了Tick事件,和设置Enabled=True后才会自动计时,停止计时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的Form属于同一个线程;timer1_Tick:是Timer对象的一个事件,表示在设定的时间间隔后自动触发的事件。比如说我们想执行一段代码功能 时间间隔为1秒。原创 2017-04-19 16:56:28 · 37411 阅读 · 1 评论 -
C#学习之Queue分析
1、Queue定义队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 2、优点 a、能对集合进行顺序处理(先进先出)。 b、能接受null值,并且允许重复的元素。 3、 Queue的构造器构造器函数注释Queue转载 2017-04-17 10:15:02 · 4399 阅读 · 0 评论 -
C#学习之关于lock
lock首先先上官方Msdn的说法lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。lock 关键字在块的开始处调用 Enter,而在块的结尾处调用 Exit。 ThreadInterruptedException 引发,如果 Interrupt 中断等转载 2017-04-17 13:06:23 · 2523 阅读 · 0 评论 -
C#学习之byte数组与结构体之间的转换
原文: http://www.cnblogs.com/sunrack/articles/1244043.html//**注意在我的实际项目中直接调用字节转换,并没有定义结构体在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而转载 2017-04-21 09:59:10 · 8173 阅读 · 1 评论 -
C#中substr和substring的区别
substr(start[,length])表示从start位置开始取length个字符串substring(start,end)表示从start,到end之间的字符串,包括start位置的字符但是不包括end位置的字符 Js的substring和C#的Substring的作用都是从一个字符串中截取出一个子字符串,但它们的使用方法却有很大的不同,下边我们来比较看看:Js的s转载 2017-04-21 13:09:56 · 9586 阅读 · 0 评论 -
C#学习之ToString()和Convert.ToString()的用法区别
一、概念说明在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默认继承自object,所以都有tostring()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各基本数据类型,也可以是bool或object类对像; 二、ToString()和Convert.ToString()的区别一般转载 2017-04-21 13:29:15 · 5129 阅读 · 0 评论 -
comboBox.SelectedItem与SelectedText区别
1、comboBox.SelectedItem是指当前选定项的对象,而不是文本;SelectedItem 属性设置为一个对象时,ComboBox尝试使该对象成为列表中当前选定的对象。如果在列表中找到了该对象,则将它显示在ComboBox的编辑部分,并且将SelectedIndex属性设置为相应的索引。如果列表中不存在该对象,则SelectedIndex属性保留其当前值。 2、comboB转载 2017-05-04 11:21:48 · 8949 阅读 · 0 评论 -
C#学习之Task 的用法1
其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观。代码更简洁了,使用Task来进行操作。可以跟线程一样可以轻松的对执行的方法进行控制。顺便提一下,配合CancellationTokenSource类更为可以轻松的对Task操作的代码进行中途终止运行,会在后面的章节中讲述。如果我们使用线程池来实现某几个方法运行,然后等待运行完成的大概会编写如下代码:转载 2017-05-04 10:46:37 · 1039 阅读 · 0 评论 -
C#学习之Task 的用法2
随着 .NET 4.0的到来,她与以前各版本的一个明显差别就是并行功能的增强,以此来适应这个多核的世界。于是引入了一个新概念---任务,作为支持并行运算的重要组成部分,同时,也作为对线程池的一个补充和完善。从所周知,使用线程池有两个明显的缺点,那就是一旦把我们要执行的任务放进去后,什么时候执行完成,以及执行完成后需要返回值,我们都无法通过内置的方式而得知。由于任务(Task)的推出,使得我们对并行转载 2017-05-04 11:29:50 · 5069 阅读 · 0 评论 -
C#学习之Task.ContinueWith(连续的任务)的使用
通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作。任务处理程序都不带参数或者带一个对象参数,而任务的连续处理方法都有一个Task类型的参数,这里可以访问起始任务的相关信息:如下面的示例代码: 1: using System; 2: using System.转载 2017-05-04 11:31:56 · 25865 阅读 · 0 评论 -
C#学习之UI线程和线程池线程之间通讯之TaskScheduler.FromCurrentSynchronizationContext()
讲了如何在UI线程和线程池线程之间通讯。一般来说,UI线程拥有的对象,其他线程是无法操作的。但是.Net有一个很重要的抽象对象——TaskScheduler(任务调度器)。它协调着不同任务(线程)的运行,使得线程池中的线程有了操作UI线程的可能。在我以前不知道OberservableCollection和WPF开发的时候,都是要么使用 Invoke方法,要么就是使用TaskScheduler。这篇转载 2017-05-04 14:56:27 · 4815 阅读 · 0 评论 -
C#学习之as是什么意思?
(1)as运算符用于执行引用类型的显式类型转换。 如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null。as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将返回null,而不是引发异常。(2)形式:表达式as 类型as的规则如下:1. 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;2. 不会抛出异常;3. 如果结果判断为空,则强制执行类型转换将转载 2017-04-18 10:59:35 · 3018 阅读 · 0 评论 -
c#学习之Parse是什么意思
Parse是什么意思是"解析"的意思,即数据类型转换.如:int.Parse(array[0])//**把array[0]获取的数据转换成int型;备注:不是强制类型转换.强转是这样写的:(int)(Console.ReadLine())原创 2017-04-10 15:32:11 · 11397 阅读 · 1 评论 -
C#中的Equals与==
一:Equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否指向同一个对象。比如我们需要比较两个对象是否相等,比如在一个ArrayList中进行排序查找等操作时。System.Object提供了Equals()虚方法:class Object{public virtual Boolean Equals(object o){if (t转载 2017-03-28 13:37:09 · 2157 阅读 · 0 评论 -
关于LinkedList和LinkedListNode
1.概念: List是数组链表LinkedList是指针链表、双向链表选择List还是LinkedList要看你的使用特点.数组链表访问快,复杂度O(1),但是添加删除复杂度O(n)指针链表访问复杂度是O(n),但是添加删除很快O(1)2.含义LinkedList集合类没有非泛型类的版本,它是一个双向链表,它的元素指向元素的前一个与后一个元素链表的优点是:如果要转载 2017-03-22 23:51:50 · 12745 阅读 · 1 评论 -
C#中DataGridView控件使用大全
标签: c datagridview 分类: C/C++/C#DataGridView 动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法:转载 2017-03-28 15:41:29 · 702 阅读 · 0 评论 -
C# InvokeRequired和Invoke
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先要告转载 2017-03-29 11:48:07 · 1382 阅读 · 0 评论 -
C# openfiledialog的使用
文件对话框(FileDialog)一、打开文件对话框(OpenFileDialog) 1、 OpenFileDialog控件有以下基本属性InitialDirectory 对话框的初始目录Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"FilterIndex 在对话框中选择的文件筛选器的索引,转载 2017-03-29 14:05:29 · 762 阅读 · 0 评论 -
WPF 中的 loaded 事件和 Initialized 事件
在 WPF 中, 控件有 Loaded 和 Initialized 两种事件. 初始化和加载控件几乎同时发生, 因此这两个事件也几乎同时触发. 但是他们之间有微妙且重要的区别. 这些区别很容易让人误解. 这里介绍我们设计这些事件的背景. (不仅适用于 Control 类, 同样在通用类如 FrameworkElement 和 FrameworkContentElement 类也适用.)转载 2017-03-22 23:08:19 · 2514 阅读 · 0 评论 -
C# Controls.Remove 和 Controls.Clear()
通俗的讲,Controls.Remove 和 Controls.Clear()的主要差别在于,Controls.Remove 可以实现一个一个的删除控件,而 Controls.Clear()是将所有的控件一次性强制删除。如果使用foreach方法,借助Controls.Remove,按理说也可以做到删除全部控件,即: foreach (Control mControl in t转载 2017-03-23 08:59:00 · 3469 阅读 · 1 评论 -
判断窗体是否打开
Form1 form = null; private void button1_Click(object sender, EventArgs e) { if (form == null || form.IsDisposed) { form = new Form1(); form.ShowDialog();原创 2017-03-23 09:57:13 · 2043 阅读 · 0 评论 -
Form的close()和Dispose()的区别
字面理解:Close - 关闭Dispose - 清除/释放说明:Close表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Close之后,该连接会被关闭,但是后续依然可以Open并调用Dispose表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Dispose之后,该连接会关闭并被销毁,打上回原创 2017-03-23 11:37:53 · 2689 阅读 · 0 评论 -
关于switch语句的使用
switch case语句适用于从一组互斥的分支中选择一个执行分支。值得注意的就是case的值必须是常量表达式不允许是变量。C#中的switch case语句更安全,如果激活块中靠前的一个case子句,后面的case子句就不会被激活(除非使用goto语句、但不建意使用)。注意switch case语句有一种例外情况,如果一个case子句为空,就可以从这个c转载 2017-03-23 11:56:50 · 611 阅读 · 0 评论 -
关于委托deleagate
1. 委托是什么?其实,每个人都委托都有不同的见解,因为看问题的角度不同。个人可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。 (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。既然委托是一种类型,那么它存储的是什么数据?我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的转载 2017-03-23 17:07:20 · 518 阅读 · 0 评论 -
C#学习之StringBuilder类的使用总结
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,转载 2017-04-10 10:10:57 · 206 阅读 · 0 评论 -
C#学习之资源的理解
一:什么是资源在开始本文前,需要一些准备知识。首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。非托管资源是指:所有的Window内核对象(句柄)都是非托管资源,如对于Stream,数据库连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到CLR管理;托管资源是指:由CLR管理分配和释放的资源,即由CLR里new出来的对转载 2017-03-31 14:48:32 · 420 阅读 · 0 评论 -
C#学习之ToString()格式大全
一、基本格式:stringstr1=string.Format("{0:N1}",56789); //result: 56,789.0stringstr2=string.Format("{0:N2}",56789); //result: 56,789.00stringstr3=string.Format("{0:N3}",5678转载 2017-04-10 15:16:21 · 1004 阅读 · 0 评论 -
C#学习之PadLeft的意思
PadLeft的意思有时候,为了让格式统一,当位数不足时,给予补足。比如:2008-01-01 13:42:05,这其中就对月、日、秒进行了补位。在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位。PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddingChar 补足 totalWidth原创 2017-04-10 15:29:49 · 1166 阅读 · 0 评论 -
C#学习之帧校验序列码FCS
在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。 帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性设置的。将每一帧中的第一个字符@到该帧中正文的最后一个ASCII 字符作“异或”运算, 并将异或的结果转换为两个ASCII码, 便得到了FCS , 它作为原创 2017-04-24 09:38:18 · 8637 阅读 · 0 评论