C#
文章平均质量分 75
一苇渡江694
无有功德,一苇渡江
展开
-
C#中@的用法
C#中@的用法 在C#代码中,字符串以@开头,表示转义序列“不”被处理 例如: string filepath = @”C:\Docs\Source\a.txt”; 如果用@引起来的字符串包括双引号,则应该使用两对双引号 例如: “”” A Boy!”” cried the captain.” 则输出 “A Boy!” cried the captain. 在C#中@可以作原创 2015-07-09 08:59:47 · 3085 阅读 · 0 评论 -
C#读写.ini文件
C#代码中要读写.ini文件,需要导入kernel32.dll中的GetPrivateProfileString和WritePrivateProfileString两个函数。首先,介绍一下kernel32.dll。kernel32.dll是Windows9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理。原创 2015-08-03 14:31:49 · 11024 阅读 · 0 评论 -
C#中Array类的使用
Array类提供创建、操作、搜索和排序数组的方法,因而在公共语言运行时中用作所有数组的基类。命名控件: System程序集:mscorlib语法:public abstract class Array:ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuraEquatab原创 2015-07-22 15:16:47 · 13296 阅读 · 0 评论 -
C#中Array.Sort() 快速排序-源码分析
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数原创 2015-07-23 11:27:06 · 26221 阅读 · 0 评论 -
C#对称加密算法实现及相关类说明
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。因此加密原创 2015-08-04 11:11:43 · 4562 阅读 · 1 评论 -
C#中ArrayList类的使用
ArrayList类使用大小可按需要动态增加的数组实现IList接口命名空间:System.Collections程序集:mscorlib语法:public class ArrayList:IList, ICollection, IEnumerable, ICloneable1.ArrayList添加元素1.1 ArrayList.Add原创 2015-07-23 15:48:41 · 21856 阅读 · 0 评论 -
C#中多屏现实--Screen类的使用
Screen类表示单个系统上的一个或多个显示设备命名空间:System.Windows.Forms程序集:System.Windows.Forms(在System.Windows.Forms.dll中)语法:public class Screen此对象的构造函数不是公共的,因此无法显示创建Screen对象,该对象在调用公共方法时创建。Screen原创 2015-08-04 15:16:41 · 9994 阅读 · 0 评论 -
浅析C#中抽象类和接口的区别
文章《浅析C#中接口的重要性》中讲述了如何声明和使用接口。但是C#具有abstract关键字形成的抽象类,那么二者我们该如何选择呢!C#允许把类和函数声明为abstract。抽象类不能实例化,而抽象函数也不能直接实现,必须在非抽象的派生类中重写。显然,抽象函数本身是虚拟的,但是不能提供virtual关键字。如果类包含了抽象函数,则该类也是抽象的,必须声明为抽象。定义抽象类:public abstra原创 2015-09-01 09:00:24 · 11759 阅读 · 1 评论 -
浅析C#中接口的重要性
C#中有了接口这一概念。我觉得接口就像是C++中的抽象基类。 接口可以理解为是一种约定,使得实现这个接口的类或是结构在形式上保持一致。声明接口: 语法和声明抽象类完全相同。 public interface IBankAccount{ void PayIn(decimal amount); bool Withdraw(decimal amount); decima原创 2015-09-01 08:53:43 · 6114 阅读 · 1 评论 -
C#(WPF)中使用WinAPI函数进行截屏
在C#中,没有关于截屏的相关函数,这就需要使用Win32 API函数在C#代码中完成截屏。一、基础知识介绍:gdi32.dll、user32.dll二、编码实现原创 2015-08-05 10:00:37 · 7184 阅读 · 0 评论 -
C#中的“静态”
静态构造函数: C#的一个新特征是也可以给类编写无参数的静态构造函数。编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态的字段和属性。.NET运行库没有确保什么时候执行静态构造函数,所以不能把要求在某个特定时刻执行的代码放在静态构造函数中。也不能预计不同类的静态构造函数按照什么顺序执行。但是可以确保静态构造函数至多运行一次,即在代码引用类之前调用原创 2015-08-19 14:47:13 · 2527 阅读 · 0 评论 -
C#实现远程开机(局域网测试通过)
首先介绍相关知识。 UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 下面是UDP与TCP的一些区别: **A)**UDP是无连接的。相比于TCP协议,UDP协议在传送数据原创 2015-09-08 10:31:30 · 8687 阅读 · 3 评论 -
C#模拟PrtScn实现截屏预备知识--剪贴板操作
剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。不过剪贴板也有限制,它在某个特定的时间只能指向一块内容,每一个随后复制的内容都会取代先前的内容。为了在C#中操作剪贴板(包括内容的读取和写入)需要使用到System.Windows.Forms.Clipboard类.Clipboard类: 提供将数据置于系统剪贴板中以及原创 2015-08-20 10:47:54 · 1993 阅读 · 0 评论 -
浅析C#中的结构体和类
类和结构是 .NET Framework 中的常规类型系统的两种基本构造。 两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。 数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等对于C/C++程序猿来说,结构体和类的区别很小。只是结构体的默认成员变量为public,类的默认成员变量为private。但是对于C#来说,结构体和类有很多的不同。首先来谈一谈为何需要结原创 2015-08-20 08:49:54 · 5178 阅读 · 0 评论 -
C#中的属性(get、set、value)
C#语言在面向对象设计和编程中对数据安全提出了严格的要求,其中一个重要的原则就是数据封装。根据这一原则,C#程序设计中要求开发人员对特定类的数据字段尽量不以公有方式提供给外界。因此在类内部多数字段的访问权限被限定为private或是public,而这些字段与外界的交流经常采用属性来进行。属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。属性是这样的成员:它们提供灵活的机制来读取、编写原创 2015-08-21 12:44:23 · 33238 阅读 · 0 评论 -
浅析C#中的索引器
索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。 索引器概述 索引器使得对象可按照与数组相似的方法进行索引。 get 访问器返回值。set 访问器分配值。 this 关键字用于定义索引器。 value 关键字用于定义由 set 索引器分配的值。 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。 索引器可被重载。原创 2015-09-07 08:46:08 · 1996 阅读 · 1 评论 -
C#模拟PrtScn实现截屏预备知识--keybd_event使用方法
Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。但是已经被SendInput取代。 语法: VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,Ptr dwExtralnfo);原创 2015-08-20 09:55:46 · 3255 阅读 · 0 评论 -
C# Array类的浅复制Clone()与Copy()的区别
1 Array.Clone方法命名空间:System程序集:mscorlib语法:public Object Clone()Array的浅表副本仅复制Array的元素,无论他们是引用类型还是值类型,但是不负责这些引用所引用的对象。新Array中的引用与原始Array的引用指向相同的对象。例:int[] intArray1 = {1,原创 2015-07-22 14:12:38 · 18733 阅读 · 0 评论 -
C#调用微软自带的计算器、记事本等软件
基础知识介绍:Process类 提供对本地和远程进程的访问并使您能够启动和停止本地系统进程 命名空间:System.Diagnostics 程序集:System(在System.dll中) 语法:public class Process : ComponentProcess.Start方法(ProcessStartInfo) 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的原创 2015-08-28 15:45:17 · 6495 阅读 · 0 评论 -
Events and Delegates(事件和委托)
Introduction One of the most interesting concepts in C# is Event-Driven approach. Though it is a simple technique, this article is here for beginners and those who are struggling to understand the eve翻译 2015-08-22 17:08:23 · 1783 阅读 · 1 评论 -
C#几种截取字符串的方法(split 、Substring、Replace、remove)
C#截图字符串常用的方法有 split 、Substring、Replace、remove等。split的使用: 1. Split( Char ()) 返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组的元素分隔)。 根据单个分隔字符用split截取。 例如 复制代码代码如下: string st="GT123_1";原创 2015-07-16 07:35:03 · 123645 阅读 · 7 评论 -
C#比较对象的相等性
对于相等的机制所有不同,这取决于比较的是引用类型还是值类型。下面分别介绍引用类型和值类型的相等性。1.比较引用类型的相等性 System.Object定义了三种不同的方法,来比较对象的相等性:ReferenceEquals()和两个版本的Equals()。再加上比较运算符(==),实际上有4种进行比较相等的方式。1.1 ReferenceEquals()方法原创 2015-07-29 09:45:47 · 6440 阅读 · 0 评论 -
C#中Queue<T>类的使用以及部分方法的源码分析
Queue类表示对象的先进先出集合。队列在按接收顺序存储消息方面非常有用,以便于进行顺序处理。 存储在 Queue, 中的对象在一端插入,从另一端移除。Queue 的容量是 QueueT> 可以包含的元素数。 当向 QueueT> 中添加元素时,将通过重新分配内部数组来根据需要自动增大容量。可通过调用 TrimExcess 来减少容量。QueueT> 接受原创 2015-07-29 15:57:43 · 6710 阅读 · 0 评论 -
C#中List(Of T)类
.Net Framework为动态列表提供了泛型类List,这个类实现了IList、ICollection、IEnumerable、IList、ICollection、IEnumerable接口。ICollection接口:ICollection接口由泛型集合类实现。使用这个接口可以获得集合中的元素个数(count属性),把集合复制到数组中(copyto()方法),还可以从集合中添原创 2015-07-29 08:23:43 · 3736 阅读 · 2 评论 -
C#中Stack<T>类的使用及部分成员函数的源码分析
Stack类StackT> 作为数组来实现。 StackT> 的容量是 StackT> 可以包含的元素数。 当向 StackT> 中添加元素时,将通过重新分配内部数组来根据需要自动增大容量。 可通过调用 TrimExcess 来减少容量。 如果 Count 小于堆栈的容量,则 Push 的运算复杂度是 O(1)。 如果需要增加容量以容纳新元素,则 Push 的运算复杂度成为 O(n),原创 2015-07-29 16:37:46 · 4275 阅读 · 0 评论 -
浅析C#中的委托
委托是寻址方法的.NET版本。在C++中,函数指针只不过是一个指向内存位置的指针,它不是类型安全的。而.NET委托完全不同,委托是安全类型的类,它定义了返回类型和参数的类型。 当把方法传递给其他方法时,需要使用委托。C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编译器这个类由什么组成的。然后,实例化一个对象(除非只使用静态方法)。对于委托也是类似,也需要两个步骤。首先必须定义要使用的委原创 2015-08-25 10:10:23 · 4191 阅读 · 3 评论 -
浅析C#中的Func<>委托
Func委托封装一个不具有参数但是却返回TResult参数指定的类型值的方法。语法:public delegate TResult Func()Func委托封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。 语法public delegate TRe原创 2015-08-25 11:42:36 · 3192 阅读 · 2 评论 -
通过一个WPF实例进一步理解委托和事件
在前写过“浅谈C#中的委托”和“浅谈C#中的事件”两篇博客,内容有些抽象,似乎难以说明委托和事件的关系。 今天通过一个小程序来进一步说明二者的使用及联系。 首先新建一个WPF应用程序,取名TestDelegateAndEvent。 在.xmal中加入四个按钮,并添加Window_Loaded事件。 代码如下:<Window x:Class="TestDelegateAndEvent.Main原创 2015-08-26 16:39:26 · 14663 阅读 · 0 评论 -
浅析C#中的事件
讲过了委托,不得不讲事件。 事件基于委托,为委托提供了一种发布/订阅机制。 在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。 在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件。可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理原创 2015-08-26 09:27:45 · 3771 阅读 · 1 评论 -
浅析C#中的Lambda表达式
上文中用了一点篇幅讲述了匿名方法的使用。自从C#3.0开始,就可以使用一种新语法把视线代码赋予委托,即Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。上文中使用匿名方法的例子可以改为使用Lambda表达式。语法: Lambda表达式的定义方式为:“([参数列表]) => 表达式”。运算符“=>”是一种与赋值运算“=”具有相同优先级的右结合运算符,在英语里读作:“goes原创 2015-08-25 11:54:06 · 3560 阅读 · 2 评论 -
C# 中动态调用C++动态链接
之前的文章中讲述过从DLL中导出变量,其中包括了静态加载和动态加载。C#调用C++动态链接库同样分为静态加载和动态加载。fellen的博客“WPF中使用MFC动态链接库(dll)函数”中讲述的是如何C#静态加载DLL,即需要将C++代码编译生成的Dll放在C#程序的Bin目录下,并在引入函数的位置加入[DllImport(“xxx.dll”)] 。由于Dll路径的限制,使用的不是很方便,C#中我们经原创 2015-08-26 11:23:25 · 4500 阅读 · 1 评论 -
C#中SortedList类的使用
C#中SortedList类命名空间:System.Collections程序集:mscorlib(在mscorlib.dll中)语法:public class SortedList : IDictionary, ICollection, IEnumerable, ICloneable构造函数:1. SortedList()初始化原创 2015-07-30 15:01:27 · 5612 阅读 · 0 评论 -
C#中数组的使用
1、简单数组:声明:int[] myArray初始化:声明了数组后,就必须为数组分配内存来保存数组的所有元素。特别注意的是数组是引用类型,故需要使用new运算符来指定数组中元素的类型和数量来初始化数组的变量。myArray = new int[4]声明初始化合并:int [] myArray = new int[4];使用初始化器为数原创 2015-07-21 14:08:10 · 6330 阅读 · 0 评论 -
浅析C#(WPF)中的Application类
Application类 封装WFP应用程序。 命名空间:System.Windows 语法:public class Application : DispatcherObject, IQueryAmbient 可以看到Application继承了DispatcherObject类和IQueryAmbient接口。首先看一下DispatcherObject类 DispatcherObjec原创 2015-08-28 10:24:50 · 3392 阅读 · 0 评论 -
浅析C#中const与readonly的区别
在文章《浅析C++中的const(比#define的优势)》中简要分析了const关键字的作用,以及较#define的优势。C#中同样具有关键字const。但是c#中还有一个关键字叫readonly,很多人容易搞混二者的区别,我也不例外。按照国际惯例,首先看一下MSDN中如何描述的:Constants are immutable values which are known at compile t原创 2015-09-15 08:54:26 · 1766 阅读 · 3 评论