C#
文章平均质量分 91
周成风
Windows原生开发C/C++,QT,C#,熟悉Windows CEF内核二次开发
App跨端Flutter
鸿蒙原生ArkTS、ArkUI
展开
-
C#之相等比较
C#中的对象都继承自System.Object对象,分为引用类型和值类型两种,所以对象的相等比较而言就分两种,一种是比较引用,一种是比较值。System.Object默认提供了三个方法来进行对象的相等比较:静态的ReferenceEquals()和Equals()的两个版本,加上“==”运算符共有四种来进行对象相等比较的方法。 相等比较的方法:静态的ReferenceEquals()、E转载 2013-10-21 14:51:34 · 1149 阅读 · 0 评论 -
译文:C#中的弱事件(Weak Events in C#)
(原创翻译文章·转载请注明来源:http://blog.csdn.net/hulihui)原文:Weak Events In C#: Different approaches to weak events. by Daniel Grunwald. Download source code - 15.5 KB翻译前序翻译后记目录引言究竟什么是事件?第1部分:监听方转载 2016-01-01 23:30:21 · 3736 阅读 · 1 评论 -
提高你开发效率的十五个Visual Studio 2010使用技巧
相信做开发的没有不重视效率的。开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS。能够对一个IDE产生依赖,说明这个IDE确实有它的独特之处。无容置疑,VS是一个非常强大的IDE,它支持多语言编辑。支持C#,VB,C/C++,HTML......它拥有强大的调试编译功能。它让我们不用去记住那些安装,环境变量设置,服务器设置,编译的繁琐过程。高度集成化。凡事有利有弊,在敏捷开发盛行的时代转载 2016-01-02 18:36:36 · 1434 阅读 · 0 评论 -
初识Ildasm.exe——IL反编译的实用工具
Ildasm.exe 概要:一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello World 的 exe 可执行文件)抽取出 IL 代码,并且给出命名空间以及类的视图。在讲述如何反编译之前,有必要从虚拟CPU的角度来看CLR,这样有助于先从正面了解代码执行过程。虚拟CPU: .N转载 2016-01-03 12:54:06 · 4723 阅读 · 0 评论 -
检测到ContextSwitchDeadlock解决方法
参照百度经验:http://jingyan.baidu.com/article/020278116b788d1bcd9ce55e.html简单说:在Visual Studio菜单中【调试】-【异常】弹出对话框,其中的“Managed Debugging Assistants"内去掉ContextSwitchDeadlock异常后的选中,确定后即可。转载 2016-04-09 09:00:33 · 4035 阅读 · 0 评论 -
Moq测试基础说谈(四)——Mock类,创建对象,实用工厂
Mock Class定义为: public class Mock : Mockwhere T : class 这的构造方法:Mock()Mock(MockBehavior)Mock(arrayObject>[])Mock(MockBehavior, arrayObject>[]) Mock的泛型实现类,它有很多方法和属性。这里一一列举。(一)方法转载 2016-02-15 11:11:14 · 5003 阅读 · 0 评论 -
Moq测试基础说谈(三)——属性,常用方法
(一)属性(1)测试准备:public class Customer{public virtual int Unid { get; set; }public virtual string Name { get; set; }}测试var customer = new MockCustomer>();customer.Setup(p => p.Name).Re转载 2016-02-15 11:09:35 · 2549 阅读 · 0 评论 -
Moq测试基础说谈(二)——Mock方法,方法参数
准备工作:public interface ICustomer{ }(一)方法(1)普通的方法在接口中添加3个方法:void AddCall();string GetCall();string GetCall(string strUser); Mock测试:var customer = new MockICustomer>(); customer转载 2016-02-15 11:07:14 · 11084 阅读 · 0 评论 -
Moq测试基础说谈(一)——简介,下载
Moq,就是Mock you。读音可以读成Mock~you。是Mock框架的一种。用于测试中的Mock测试。Mock是模拟的意思。Mock是模拟对象的一种技术。它可以用于以下情况(引用):----- 真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)----- 真实对象很难被创建(比如具体的web容器)----- 真实对象的某些行为很难触发(比如网络错误)-----转载 2016-02-15 11:04:57 · 2532 阅读 · 0 评论 -
Mock方法介绍
1 现有的单元测试框架单元测试是保证程序正确性的一种有效的测试手段,对于不同的开发语言,通常都能找到相应的单元框架。借助于这些单测框架的帮助,能够使得我们编写单元测试用例的过程变得便捷而优雅。框架帮我们提供了case的管理,执行,断言集,运行参数,全局事件工作,所有的这些使得我们只需关注:于对于特定的输入,被测对象的返回是否正常。那么,这些xUnit系列的单元测试框架是转载 2016-02-15 10:41:09 · 7789 阅读 · 0 评论 -
单元测试NUnit教程
测试代码必须做以下几件事情: 准备测试所需的条件 调用要测试的方法 验证被测方法的行为和期望的行为是否一致 完成后清理各种资源为了使用NUnit框架,需要做这些工作: 1.使用using声明引用必要的NUnit类(并添加一个指向NUnitDll的引用) 2.定义一个测试类,必须是Public的、包换一个public的没有参数的构造函数,并且在类定义上转载 2016-02-15 09:13:07 · 2460 阅读 · 0 评论 -
C#反射
[转]C#反射反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 程序代码在编译转载 2013-11-07 15:27:33 · 1173 阅读 · 0 评论 -
C#中Dispose,finalize,GC,析构函数区别
释放类所使用的未托管资源的两种方式: 1.利用运行库强制执行的析构函数,但析构函数的执行是不确定的,而且,由于垃圾收集器的工作方式,它会给运行库增加不可接受的系统开销。 2.IDisposable接口提供了一种机制,允许类的用户控制释放资源的时间,但需要确保执行Dispose()。 一般情况下,最好的方法是执行这两种机制,获得这两种机转载 2013-10-22 15:18:27 · 5399 阅读 · 0 评论 -
C#中的const与readonly的异同
我们知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readonly和c原创 2013-10-21 16:34:29 · 1081 阅读 · 0 评论 -
数组,ArrayList,List的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。[csharp] view plaincopy"font-family:SimSun;font-size:18px;">//数组转载 2013-10-21 13:04:43 · 1503 阅读 · 0 评论 -
C# 类的序列化[Serializable]
简介 序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。在 面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例 如,简单的二转载 2013-11-22 15:56:29 · 3952 阅读 · 0 评论 -
C#中根据注册表查找字体与字体文件路径对应关系
private SortedDictionary ReadFontInformation() { var dictionary = new SortedDictionary(); RegistryKey mykey = Registry.LocalMachine; // 打开注册表原创 2013-11-27 17:01:28 · 3326 阅读 · 0 评论 -
C#对象序列化
要让一个对象支持.Net序列化服务,用户必须为每一个关联的类加上[Serializable]特性。如果类中有些成员不适合参与序列化(比如:密码字段),可以在这些域前加上[NonSerialized]特性。 C#支持三种序列化格式:二进制格式(使用BinaryFormatter序列化器)、SOAP格式(使用SoapFormatter序列化器)、XML格式(使用XmlSerializer序列转载 2013-11-14 16:22:16 · 1538 阅读 · 0 评论 -
C#中List<T>对象的深度拷贝问题
一、List对象中的T是值类型的情况(int 类型等)对于值类型的List直接用以下方法就可以复制:[csharp] view plaincopyprint?List oldList = new List(); oldList.Add(..); List newList = new List(oldList);转载 2013-11-14 16:04:05 · 2894 阅读 · 0 评论 -
C#中HashTable的用法
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的转载 2013-11-29 15:52:02 · 739 阅读 · 0 评论 -
C#中导出PDF格式文档
最近研究将利用GDI+绘制的图形导出到PDF文档之中,网上有不少资料。其中利用iTextSharp资料较多。同时也可以利用ComponentOne提供的库导出PDF文档。两者调用的代码都相对简单,在此不做叙述。主要对比两者的优缺点:1、iTextSharp库是免费的第三方库,而ComponentOne是收费的;2、iTextSharp提供的类接口相比ComponentOne稍显复杂。iTe原创 2013-12-10 14:48:37 · 2269 阅读 · 0 评论 -
MVC模式总结
在较大的系统中,一个类的功能应该尽可能的相对简单,便于之后的维护和扩展。MVC模式可以很好的拆分类功能。M-->Model,模型对应数据,程序中命名为DO,Data Object,只负责数据的存储,序列化等;V-->View,显示,程序中命名为VO,View object,负责数据的显示;C-->Control,控制,程序中命名为BO,Business Object,负责业务逻辑的处理原创 2013-12-10 16:07:01 · 1351 阅读 · 0 评论 -
C++, Java和C#的编译过程解析
1.1.1 摘要我们知道计算机不能直接理解高级语言,它只能理解机器语言,所以我们必须要把高级语言翻译成机器语言,这样计算机才能执行高级语言编写的程序,在接下来的博文中,我们将介绍非托管和托管语音的编译过程。1.1.2正文非托管环境的编译过程(C/C++)纯C/C++的程序通常运行在一个非托管环境中,类是由头文件(.h)和实现文件(.cpp)组成,每个类形成了一个单独转载 2015-12-30 23:06:54 · 744 阅读 · 0 评论 -
Nunit 2.6 无法调试.Net Framework 4.0
好久没有写单元测试了,拿出来一个原来的单元测试在跑,突然发现断点加载不上了,查了一下,说是要修改nunit.exe.config[html] view plaincopyprint?configuration> The GUI only runs under .NET 2.0 or higher. The us转载 2016-02-15 09:01:47 · 1059 阅读 · 0 评论