随笔分类 -  C#

上一页 1 2 3 下一页
从编译,执行过程理解c#
摘要:上节我们说过C#所开发的程序源代码并不是编译成能够直接在操作系统上执行的二进制代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework的虚拟机——被称之为通用语言运行时(CLR)执行。所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermedia... 阅读全文
posted @ 2014-04-25 14:50 记性特差
C#中的interface没那么简单
摘要:最近在园子里闲逛看到一篇文章“(抽象)类和接口细节分析”,尽管作者很细心很细致。可事实上C#里面的interface没那么简单,interface有着大量不为人知的小秘密的说。1、值类型也能实现接口。尽管可能很多人连值类型都没用过,但值类型可以实现接口,是一个非常有用的特性。当值类型转换为接口类型时... 阅读全文
posted @ 2014-04-14 22:46 记性特差
Delegate、Predicate、Action和Func
摘要:写在前面DelegatePredicateActionFunc逆变和协变 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法。为什么是方法?准确的说应该是回调函数,在C运行时的qsort函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。C#中提供了一种机制,就是委托,一种回调函数的机制。 在我们做项目的过程中,委托用到的地方很多,像线程中修改窗体的状态、窗体控件事件和异步操作已完成等,以前我们创建委托的时候用delegate关键字,而且也比较麻烦,自从C#4.0有了泛型,也就有了泛型委托,使用Predicate、A.. 阅读全文
posted @ 2014-04-11 17:30 记性特差
C#基础——谈谈.NET异步编程的演变史
摘要:前言C#5.0最重要的改进,就是提供了更强大的异步编程。C#5.0仅增加两个新的关键字:async和await。使用异步编程,方法调用是在后台运行(通常在线程或任务的帮助下),并且不会阻塞调用线程。本文将介绍3种不同模式的异步编程:异步模式,基于事件的异步模式和新增加的基于任务的异步编程模式(TAP)。TAP是利用async和await关键字来实现的。通过这里的比较,将认识到新的增加的基于任务的异步模式的真正优势。假设情景:我们需要进行一个耗时操作(这里使用webclient对象下载百度首页代码),接下来通过同步以及上面谈到的3种异步模式实现。同步调用 创建一个控制台应用程序:static v 阅读全文
posted @ 2014-04-10 11:35 记性特差
C# 制作Windows服务安装包
摘要:这两天公司要用C#写一个windows服务,做成安装安装包。制作的过程中遇到了一些问题,写完之后总结一下。如果以后在用到的话可以可以参考一下,而且由于原来没有做过,不知道这样做是对是不对,请各位看官如果发现有不当之处请指教。 开始的时候我的开发工具VS 2012,需要用InstallShield,没闹明白,时间紧迫没有搞,改用vs2010。 首先创建一个windows服务: 添加安装程序: 设置服务的属性: 这里面简单设置一下服务的属性,ServiceName就是服务的名称,DispalyName是在本地服务列表中现实的名称,如果DispalyName没有设置,那么默认为Service... 阅读全文
posted @ 2014-04-08 17:39 记性特差
C#委托之个人理解
摘要:C#委托之个人理解什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。声明,如:namespace Vczx.ProCSharp.Exc2 {3 delegatedouble MathsOp( double x );4 //class defination here5 } 这就声明了一个委托,意义:任何一个返回值为double,且只有一个形参为double的函数,都可以用这个委托来... 阅读全文
posted @ 2014-03-24 18:07 记性特差
上传图片时生成缩略图,可以自定义图片尺寸
摘要:前段时间整理一些项目中可能用到的通用的方法,放到自己定义的项目中,以方便日后用到,可以快速查阅,节省时间,在这里个人也建议大家将平时好的代码收藏起来(当然这里针对初学者),以便以后用到,编程养成好的习惯!下面是上传图片生成缩略图的代码,可以自定义图片大小,跟大家分享下/// /// 生成缩略图 /// /// 源图路径(物理路径) /// 缩略图路径(物理路径) /// 缩略图宽度 /// 缩略图高度 /// 生成缩略图的方式 public static void MakeT... 阅读全文
posted @ 2014-03-11 17:09 记性特差
C#中的委托和事件(续)
摘要:引言如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注册,而不是直接使用委托变量的原因。主要是从封装性和易用性上去考虑,但是还漏掉了一点,事件应该由事件发布者触发,而不应该由客户端(客户程序)来触发。这句话是什么意思呢?请看下面的范例:NOTE:注意这里术语的变化,当我们单独谈 阅读全文
posted @ 2014-03-11 15:41 记性特差
C#中类和结构体的区别
摘要:结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的(以下摘录):C#结构体和类的区别问题:在C#编程语言中,类属于引用类型的数据类型,结构体属于值类型的数据类型,这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。C#结构体和类的区别技术要点: ◆类在传递的时候,传递的内容是位于托管内存中的位置,结构体在传递的时候,传递的内容是位于程序堆栈区的内容。当类的传递对象修改时,将同时修改源对象,而结构体的传递对象修改时,不会对源对象产生影响。 ◆在一个类中,可以定义默认的 阅读全文
posted @ 2014-03-11 14:48 记性特差
猜单词游戏
摘要:/*Playing a console-based gameTo solve the problem, your program must be able to:Choose a random word to use as the secret word. That word is chosen from a word list, as described in the following paragraph. Keep track of the user’s partially guessed word, which begins as a series of dashes and then 阅读全文
posted @ 2014-03-11 11:58 记性特差
用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
摘要:这些对老一代的程序员都是老生常谈的东西,没什么新意,对新生代的程序员却充满着魅力。曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托,表达式树这些应用。今天我尝试用简单的方法叙述一下,让大家在五分钟内看完这篇博客。第一分钟:委托 有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件。先上一段代码:下边的代码,完成了一个委托应用的演示。一个委托分三个步骤:public partial class WebForm3 : System.Web.UI.Page{ //step01:首先用delegate定义一个委托 。 publ... 阅读全文
posted @ 2014-02-19 17:52 记性特差
我在项目中运用 IOC(依赖注入)--实战篇
摘要:上一篇《我在项目中运用 IOC(依赖注入)--入门篇》只是简单的使用 IOC。实际项目使用 IOC 的情景复杂多了,比如说,构造函数有多个参数,有多个类继承同一个接口... Unity都有解决方法。首先回顾一下入门篇的项目需求:项目中数据统计功能,它下面有三种不同的统计类型,需要与数据库交互,然后展示到页面,在这篇中我们接着这个需求继续扩充。【没有接口】新增Model 层,LoginUser 当前登录人。无接口的怎样用IOC 创建对象。代码如下Model.LoginUser loginUser = container.Resolve();【多个子类】DAL 层 新增ShowResult2 方法 阅读全文
posted @ 2014-02-10 13:38 记性特差
我在项目中运用 IOC(依赖注入)--入门篇
摘要:之前就听同事说过依赖注入(dependency injection)、控制反转(Inversion of Control)。起初听的是一头雾水,试着在项目中运用了几次,总算明白了一些,抛砖引玉,与大家分享一下拙见。其实依赖注入和控制反转指的都是同一个事情。什么是依赖注入了???【个人理解】以最熟悉的三层架构的项目来说,BLL层依赖DAL层,UI层依赖于BLL层,层层之间紧密联系。代码里到处都是new 对象。认识IOC后,发现IOC最大的好处就是解耦了对这种层级之间的依赖关系进。程序本身不在负责对象的创建和维护,而交给外部容器(IOC容器)来负责。外部容器在运行时动态地将依赖的对象注入到组件之中 阅读全文
posted @ 2014-02-10 11:10 记性特差
8种主要排序算法的C#实现
摘要:新的一年到了,很多园友都辞职要去追求更好的工作环境,我也是其中一个,呵呵!最近闲暇的时候我开始重温一些常用的算法。老早就买了《算法导论》,一直都没啃下去。这本书确实很好,只是太难读了,总是读了几章就又读不下去了!工作上也几乎用不到。我这段时间发现看这些排序算法比以前容易了很多,就借此机会将它们整理总结起来。一是方便以后重温,二是可以应对笔试面试。同时也希望这篇博文可以帮助各位刚辞职和正在学习排序算法的园友。PS:有可能实现的代码并不是最优的,如果有什么错误或者值得改进的地方,还请大家帮忙指出。简介排序算法是我们编程中遇到的最多的算法。目前主流的算法有8种。 平均时间复杂度从高到低依次是: 冒泡 阅读全文
posted @ 2014-01-23 17:34 记性特差
C#项目代码规范
摘要:前言 小菜就是小菜,几个人搞出来的项目,让公司大牛稍微看了下,最后送出了惨不忍睹四个字。命名各种各样,五花八门,大写英文、小写英文、大写拼音、小写拼音、英文和拼音组合、字母和特殊字符(下划线等)组合。这样的项目代码要是让人来维护或者添加功能、查找bug会头痛欲裂。也没办法谁叫咱们是小菜呢?而且程序员最头疼的事:http://kb.cnblogs.com/page/192017/这篇知识博文里,最终的结果居然是命名。所以…… 于是结合现有项目,通过博客园查看各种博客文章,进行了一下总结。当然这样做肯定是有不少好处的。 1.方便代码的交流和维护。 2.不影响编码的效率,不与大众习惯冲突。 ... 阅读全文
posted @ 2013-12-05 11:12 记性特差
C#创建Windows Service(Windows 服务)基础教程
摘要:Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的。所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Windows Service写很深入。本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。一、创建一个Windows Service1)创建Windows Service项目2)对Service重命名将Service1重命名为你服务名称,这里我们命名为ServiceTest。二、创建服务安装程序1)添加安装程序之后我们可以看到上图,自动为我们创建了Pr 阅读全文
posted @ 2013-11-10 13:55 记性特差
C#学习笔记——常量、字段以及事件
摘要:一 常量与字段(一) 常量 常量总是被视为静态成员,而不是实例成员。定义常量将导致创建元数据。代码引用一个常量时,编译器会在定义常量的程序集的元数据中查找该符号,提取常量的值,并将值嵌入IL中。由于常量的值直接嵌入IL,所以在运行时不需要为常量分配任何内存。此外,不能获取常量的地址,也不能以传递引用的方式传递常量。这些限制意味着,没有很好的跨程序集版本控制特性。因此,只有在确定一个符号的值从不变化时,才应该使用。如果希望在运行时从一个程序集中提取一个程序集中的值,那么不应该使用常量,而应该使用 readonly 字段。(二) 字段 CLR支持类型字段和实例字段。对于类型字段,用于容纳字段数.. 阅读全文
posted @ 2013-11-08 13:41 记性特差
文本加密和解密
摘要:/// <summary> /// DES加密/解密类。 /// </summary> public class DESEncrypt { public DESEncrypt() { } #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param name="Text"></param> /// <returns></returns> public static string Encrypt( 阅读全文
posted @ 2013-03-12 17:24 记性特差
设计模式学习笔记-组合模式(转载)
摘要:1. 概述 将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。2. 解决的问题 当希望忽略单个对象和组合对象的区别,统一使用组合结构中的所有对象(将这种“统一”性封装起来)。3. 组合模式中的角色 3.1 组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。 3.2 叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点。 3.3 合成部件(Composite):定义有枝节点的行为,用来存储部件,实现在Component接口中的有关操作,如增加(Add)和删除(Remove)。4. 模式解读 ... 阅读全文
posted @ 2012-07-06 17:01 记性特差 阅读(185) 评论(0) 推荐(0)
设计模式 抽象工厂(Abstract Factory Pattern)转载
摘要:抽象工厂模式,比工厂模式具有更高层次的抽象。当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。换句话说,抽象工厂是一个工厂对象,他能返回一系列相关类中的一个类。可以用简单工厂决定返回那个类。通常认为,实验式的例子应该引用汽车制造产,我们希望丰田汽车完全使用丰田配件,而福特汽车完全使用福特配件。可以把每个汽车制造厂设想为抽象工厂,配件作为一组相关的类。花园规划工厂我们可以考虑一下实际的例子,字应用程序里要用到抽象工厂。假设读者编写一个程序来规划花园,这可能是季生植物型花园、蔬菜型花园、或者多年植物花园。不管规划哪种类型的花园,都会遇到如下问题:1.边缘种植什 阅读全文
posted @ 2012-05-10 13:45 记性特差 阅读(242) 评论(0) 推荐(0)

上一页 1 2 3 下一页