摘要:互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。互斥锁可适用于一个共享资源每次只能被一个线程访问的情况函数://创建一个处于未获取状态的互斥锁Public Mutex();//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态P...
阅读全文
11 2015 档案
摘要:线程:线程是进程的独立执行单元,每一个进程都有一个主线程,除了主线程可以包含其他的线程。多线程的意义:多线程有助于改善程序的总体响应性,提高CPU的效率。多线程的应用程序域是相当不稳定的,因为多个线程在同一时间内都能运行共享的功能模块。为了保护应用程序的资源不被破坏,为多线程程序提供了三种加锁的机制...
阅读全文
摘要:SQLite介绍 在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义、表、索引和数据本身)都保存在一个单一的文件中。并且,SQLite是一个用C实现的类库,它在内存消耗、文件体积、简单性...
阅读全文
摘要:C# Dictionary 类Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过key检索值的速度非常快,其时间复杂度为常数阶 O(1),因为 Dictionary 类是以哈希表的方式实现的。只要对象用作键在 Dictionary,不得更改...
阅读全文
摘要:AttributeUsage AttributeTargets在C#的类中,有的类加上了[AttributeUsage(AttributeTargets.Property)]这个是起什么作用的呢?AttributeTargets 枚举 成员名称说明All可以对任何应用程序元素应用属性。Assemb...
阅读全文
摘要:is和as操作符is操作符:检查对象是否与给定类型兼容。说明:1、如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true,否则返回false。(1):表达式为空:返回false//表达式为空object oo = null;bo...
阅读全文
摘要:合并委托(多路广播委托)本示例演示如何创建多播委托。 委托对象的一个有用属性是:可以使用 + 运算符将多个对象分配给一个委托实例。多播委托包含已分配委托的列表。在调用多播委托时,它会按顺序调用列表中的委托。只能合并相同类型的委托。- 运算符可用于从多播委托中移除组件委托。C#using System...
阅读全文
摘要:事件声明通常省略事件访问器声明。但会有一些特殊情况,例如,为每个事件设置一个字段所造成的内存开销,有时会变得不可接受。在这种情况下,可以在类中使用事件访问器声明,并采用专用机制来存储事件处理程序列表。事件的事件访问器声明指定与添加和移除事件处理程序相关联的可执行语句。访问器声明由一个添加访问器声明和...
阅读全文
摘要:event(C# 参考)event 关键字用于在发行者类中声明事件。下面的示例演示如何声明和引发将 EventHandler 用作基础委托类型的事件。C#public class SampleEventArgs{ public SampleEventArgs(string s) { Text ...
阅读全文
摘要:extern(C# 参考) extern 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。在这种情况下,还必须将方法声明为 static,如下面的示例所示:[DllImport("avifil32.d...
阅读全文
摘要:http://blog.csdn.net/uuxyz/article/details/7175248EventHandler委托与自定义委托自定义委托://1、 public delegate void UcSavedEventHanler(bool isSuccess); //2、 publ...
阅读全文
摘要:http://blog.csdn.net/xochenlin/article/details/4328954C# Winform中WndProc 函数作用:主要用在拦截并处理系统消息和自定义消息比如:windows程序会产生很多消息,比如你单击鼠标,移动窗口都会产生消息。这个函数就是默认的消息处理函...
阅读全文
摘要:下图是ClassLib1类库的项目属性 /// /// 读取INI文件 /// /// 此程序中是[ExcelCon] /// 主键 /// 返回处理是否成功此选项,会将代码中所有的注释内容输出到指定的xml中,当程序代码有这样提示帮助的时候,点上输出,其他程序调用DLL的时候也能显示...
阅读全文
摘要:属性的访问器包含与获取或设置属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含。声明采用下列形式之一:get {}set {}get 访问器get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。以下是返回私有字段 nam...
阅读全文
摘要:索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。1、索引器的定义C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。定义索引器的方式与定义属性有些类似,其一般形式如下:[修饰符] 数...
阅读全文
摘要:static(C# 参考)使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。示例下面的类声明为 static,并且只包含 static 方法:C# stat...
阅读全文
摘要:接口和抽象类:最本质的区别:抽象类是一个不完全的类,是对对象的抽象,而接口是一种行为规范。a. interface中不能有字段,abstract class则可以;b. interface可以被多重继承(即可以被多个具体类实现),abstract class则不可以;c. interface中不可能...
阅读全文
摘要:使用 Override 和 New 关键字进行版本控制C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容。 这具有多方面的意义。例如,这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的,不会导致意外行为。 它还意味着类...
阅读全文
摘要:在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别。二者都牵涉到在派生类中与override的配合使用。一、Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况: 情况1:在基类中定义了virtual...
阅读全文
摘要:virtual(C# 参考)virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。public virtual double Area() { return x * y;}虚拟成员的实现可以由派生类中的“重写成员”更改,...
阅读全文
摘要:override(C# 参考)要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。C#abstract class ShapesClass{ abstract public int Area();}class Square : ShapesClas...
阅读全文
摘要:public(C# 参考)public 关键字是类型和类型成员的访问修饰符。 公共访问是允许的最高访问级别。 对访问公共成员没有限制,如下例所示:class SampleClass{ public int x; // No access restrictions.}在下面的示例中,声明了两个类...
阅读全文
摘要:protected(C# 参考)protected 关键字是一个成员访问修饰符。 受保护成员在其所在的类中可由派生类实例访问。示例只有在通过派生类访问时,基类的受保护成员在派生类中才是可访问的。 例如,请看以下代码段:C#class A{ protected int x = 123;}clas...
阅读全文
摘要:private(C# 参考)private 关键字是一个成员访问修饰符。 私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的,如下例所示:class Employee{ private int i; double d; // private access...
阅读全文
摘要:internal(C# 参考)internal 关键字是类型和类型的成员 访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的,如下例所示:public class BaseClass { // Only accessible within the same assembly ...
阅读全文
摘要:abstract(C# 参考)abstract 修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。示例在...
阅读全文
摘要:sealed(C# 参考)当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。class A {} sealed class B : A {}还可以在重写基类中的虚方法或虚属性的方法或属性上使用 seale...
阅读全文
摘要:C#中新建一个Windows Form时,后台代码都会自动添加如下代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); ...
阅读全文
摘要:创建一个窗体Form1.cs 后,在他的下一级,有两个子文件: Form1.Designer.cs 和Form1.resx 这两个子文件Form1.Designer.cs是VS自动生成用作UI的绘制以及事件绑定的代码;Form1.resx可以用来存储资源,比如窗体上的字符串、图片等。Form1.de...
阅读全文
摘要:本文为转载 。。一. 为什么要lock,lock了什么?当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作...
阅读全文
摘要:原文地址: http://blog.csdn.net/zhuojiajin/article/details/8657853 看过了UML视频,觉的UML里的内容其实看的挺明白的。在开始画图的时候才发现,纯粹是老师讲到好。听的明白或者说觉的自己明白了只是一种错觉。对于UML里的图还是理解上不够透彻,...
阅读全文
摘要:原文地址:http://www.cnblogs.com/xiaokang088/archive/2012/02/21/2361631.htmlMEF 的精髓在于插件式开发,方便扩展。例如,应用程序的日志输出到文本,后来想改为输出到数据库,按照传统的办法,需要替换项目,删除原有的引用,增加新的引用;如...
阅读全文
摘要:http://www.cnblogs.com/firstcsharp/archive/2011/12/11/2283797.htmlint?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断...
阅读全文
摘要:由于对象是多态的,因此基类类型的变量可以保存派生类型。 若要访问派生类型的方法,需要将值强制转换回该派生类型。 不过,在这些情况下,如果只尝试进行简单的强制转换,会导致引发 InvalidCastException 的风险。 这就是 C# 提供 is 和 as 运算符的原因。 您可以使用这两个运算符...
阅读全文
摘要:http://www.cnblogs.com/JiangSoney/archive/2009/08/07/1541488.htmlMSDN:https://msdn.microsoft.com/zh-cn/vstudio/cc488006C#是一种强数据类型语言。(一种总是强制类型定义的语言。如果你...
阅读全文
摘要:http://www.cnblogs.com/JiangSoney/archive/2009/08/10/1543197.html.net框架提供了一个特性:属性(Attribute),注意:此属性非彼属性(property)(这都是翻译惹的祸)。.net框架提供了两种类型的Attribute属性:...
阅读全文
摘要:摘要:怎样在 Visual C# .NET 中跟踪和调试?当程序运行时,您可以使用 Debug 类的方法来生成消息,以帮助您监视程序执行顺序、检测故障或提供性能度量信息。默认情况下,Debug 类产生的消息显示在 Visual Studio 集成开发环境 (IDE) 的“输出”窗口中。如何使用 De...
阅读全文
摘要:转自:http://www.csharpwin.com/csharpspace/10729r8541.shtml#if/#endif条件编译常用来由同一份源代码生成不同的结果文件,最常见的有debug版和release版。但是,这些工具在具体应用中并不是非常得心应手,因为它们太容易被滥用了,使用它们...
阅读全文
摘要:转载自: http://blog.csdn.net/aaaaatiger/article/details/55833011.debug只在[debug模式下才执行](运行按钮后面的下拉框可选)2.断言 [Assert]System.Diagnostics.Debug.Assert(false,"信息...
阅读全文
摘要:转自:http://developer.51cto.com/art/201104/255455_all.htm.NET 是 Microsoft XML Web services 平台。MEF是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Edito...
阅读全文
摘要:转自[王清培] http://www.cnblogs.com/wangiqngpei557/archive/2011/06/14/2080416.html在本人的“.NET简谈插件系统开发模式”一文中我们详细介绍了插件系统开发模式的优越性,尽管.NET平台或者第三方提供的平台都为我们实现了底层插件原...
阅读全文
摘要:摘选自[王清培]博客http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html今天跟大家分享一下我们在日常开发中并不常用的开发模式“插件系统模式”,什么叫插件,从大一点的概念讲就是我们开发的软件是由很小的模块组成,每一块...
阅读全文