随笔 - 410  文章 - 0  评论 - 519  阅读 - 148万 

随笔分类 -  C#基础

LINQ to Objects系列(2)两种查询语法介绍
摘要:LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法。这篇文章分为以下几个方面进行总结。1,一个包含两种查询语法的简单示例2,查询表达式的结构3,查询方法相关的运算符一个包含两种查询语法的简单示例一个LINQ查询既可以使用查询表达式实现,也可以用查询方法实现,还可以同时组合两种查询。... 阅读全文
posted @ 2014-05-16 16:19 永远的麦子 阅读(1063) 评论(0) 推荐(1) 编辑
LINQ to Objects系列(1)相关技术准备
摘要:LINQ to Objects是LINQ的一部分,是查询对象集合的一种语法。首先看一下LINQ的体系结构,这样对LINQ有一个大致的了解。如图。第一篇文章主要是回顾一下学习LINQ to Objects相关的基础知识,主要分为以下几个方面。1,隐式类型局部变量2,匿名类型3,扩展方法4,对象初始... 阅读全文
posted @ 2014-05-16 14:17 永远的麦子 阅读(510) 评论(0) 推荐(1) 编辑
公用类库(5) Xml操作辅助类XmlUtil
摘要:Xml操作辅助类主要包括两大操作,Xml的序列化与反序列化。代码如下:namespace Tmac.Utilities{ /// <summary> /// Xml操作类 /// </summary> public class XmlUtil { /// <summary> /// 序列化对象为xml(或字节流) /// </summary> /// <param name="obj"></param> /// <returns></returns> public static. 阅读全文
posted @ 2013-03-19 23:14 永远的麦子 阅读(3720) 评论(0) 推荐(0) 编辑
公用类库(4) 缓存操作类CacheUtil
摘要:该缓存类与是基于企业库的caching组件的。公开有两个方法,分别是写缓存和读缓存。代码如下:namespace Tmac.Utilities{ /// <summary> /// 缓存辅助类 /// </summary> public class CacheUtil { private static ICacheManager cacheManager = CacheFactory.GetCacheManager(); private static string filePath = AppConfigUtil.FilePath;... 阅读全文
posted @ 2013-03-19 22:41 永远的麦子 阅读(2351) 评论(0) 推荐(0) 编辑
公用类库(3) 异常处理类ExceptionHandlingUtil
摘要:首先创建配置文件,代码如下:View Code <exceptionHandling> <exceptionPolicies> <add name="Default Policy"> <exceptionTypes> <add name="All Exceptions" type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ... 阅读全文
posted @ 2013-03-19 22:08 永远的麦子 阅读(992) 评论(0) 推荐(0) 编辑
公用类库(2) 日志类LogUtil
摘要:这个日志类是基于企业库来封装的,首先贴上配置文件的代码。View Code <?xml version="1.0" encoding="utf-8"?><configuration> <configSections> <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Pract 阅读全文
posted @ 2013-03-19 21:35 永远的麦子 阅读(3176) 评论(0) 推荐(0) 编辑
公用类库(1) 配置文件操作类AppConfigUtil
摘要:配置文件的操作主要有获取根目录和获取配置key的值value,下面是总结的配置文件操作类AppConfigUtil的代码。namespace Tmac.Utilities{ /// <summary> /// 配置文件操作类 /// </summary> public class AppConfigUtil { /// <summary> /// get base directory /// </summary> public static string baseDirectory = AppDomain... 阅读全文
posted @ 2013-03-19 20:57 永远的麦子 阅读(1324) 评论(0) 推荐(1) 编辑
提高vs操作效率,vs 2008与vs 2010快捷键总结
摘要:熟练操作vs的快捷键,可以有效地提高开发效率,下面将vs 2008与vs 2010的快捷键进行了总结,结果如下表:注:vs 2010与vs 2008的快捷键基本相同。编辑:CTRL + M, L将当前源代码的大纲在折叠与展开间切换CTRL + E, C(commentary)注释掉所有选中的源代码部分CTRL + E, U(undo)取消掉所有选中的源代码部分的注释CTRL + E, D(document)按源码缩进和标准格式来格式化当前文档CTRL + E, F(format)按源码缩进和标准格式来格式化选中文档文件:CTRL + SHIFT + N(new)显示新建项目对话框CTRL .. 阅读全文
posted @ 2012-08-05 18:04 永远的麦子 阅读(825) 评论(3) 推荐(0) 编辑
读<<CLR via C#>>总结(13) 详谈泛型
摘要:1,什么是泛型? 答:泛型是类型的模板,类型是实例(对象)的模板。C#提供了5种泛型:类,接口,委托,结构和方法。 2,使用泛型有什么好处? 答:继承实现的是"代码重用",而泛型实现的是另一种形式的代码重用,即"算法重用"。总结起来有以下优点: 1> 提高代码的可重用性。 2> 编译时的类型安全性。当使用一个不兼容的类型的时候,会在编译时就报错,而不用等到运行时再报错,提高了类型安全性。 3> 更佳的性能。当操作值类型实例的时候,使用泛型会减少值类型的装箱,这样在程序的托管堆上内存分配更少,垃圾回收也没那么频繁,从而能提高程序的性能。使 阅读全文
posted @ 2012-07-05 17:48 永远的麦子 阅读(566) 评论(1) 推荐(0) 编辑
读<<CLR via C#>>总结(12) 接口和基类
摘要:1,什么是接口? 答:接口是表示一组函数成员(或称方法)而不实现成员的引用类型。这句话有两层意思。 第一,接口包括一组函数成员但是不提供实现。 第二,接口是引用类型。 2,接口能为我们做什么? 答:通过接口可以实现多继承。因为我们只能继承一个基类,但是我们可以继承多个接口。CLR通过接口提供了"缩水版"的多继承。一,定义接口 代码如下://定义接口 public interface IMyInterface1 { void PrintOut(string s);//方法,最常用 string Name { get; set; }/... 阅读全文
posted @ 2012-07-03 17:20 永远的麦子 阅读(658) 评论(0) 推荐(0) 编辑
读<<CLR via C#>>总结(11) 详谈事件
摘要:什么是事件? 事件是类的一种成员。如果类型定义了事件,那么它就可以通知其它对象发生了特定的事情(比如Button的Click事件)。事件是实现这种交互的类型成员。 事件是建立在委托的基础之上,事件是被封装的委托。一,发布者和订阅者模式 理解这幅图对于理解事件的原理非常重要: 1,发布者类订义了事件成员。 2,订阅者类注册在事件成员被触发时要调用的方法(事件处理程序)。 3,当发布者触发事件时,所有列表中的事件处理程序都会被调用。 二,实际案例 这是一个电子邮件到达通知的例子,当电子邮件到达时,会引发NewMail事件,而注册到这个事件上的Fax和Pager都会收到通... 阅读全文
posted @ 2012-07-02 17:54 永远的麦子 阅读(661) 评论(1) 推荐(1) 编辑
读<<CLR via C#>>总结(10) 详谈委托
摘要:首先弄清楚以下几个问题: 1,什么是委托? 委托是一个类(可以通过查看IL代码证明),而且是类型安全的。 委托对象相当于方法包装器,使方法能通过包装器进行间接回调。 2,使用委托的好处? 使用委托可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,提高了程序的可扩展性。一,如何使用委托 代码如下:namespace DelegateDemo1{ //1,声明委托 internal delegate void PrintMyName(string s); public class Test { public ... 阅读全文
posted @ 2012-06-29 16:51 永远的麦子 阅读(509) 评论(0) 推荐(0) 编辑
读<<CLR via C#>>总结(9) 索引器(有参属性)
摘要:索引器,即访问器接受参数的属性。在C#中是以数组风格的语法来公开索引器的。所以这使得对象可按照与数组相似的方式进行索引。一,定义索引器internal class IndexerTest<T> //generic class { //define indexer T[] arr1 = new T[100]; public T this[int i] { get { return arr1[i]; } set { arr1[i] = value; } } //... 阅读全文
posted @ 2012-06-28 21:51 永远的麦子 阅读(520) 评论(0) 推荐(0) 编辑
让我们都建立自己的知识树吧
摘要:要学的东西很多,而我们的精力总是有限。你是否也有这样的感慨呢? 学这个没有用,公司项目中用不到。你是否也有这样的心态呢?这两种理由本身没有太大影响,甚至有时候还能帮你做判断。但是你是否把这两个作为借口来拒绝所有新东西呢? 我们要建立起自己的知识体系(知识树),凡是有助于强化或者丰富这个知识体系的,都是有用的。企业级开发受领域影响使用的技术方案总是有限,这是必须要掌握的部分,而你的知识体系要包含但是不限于此。一, 如何建立自己的知识树 1,知识树的建立是一个循序渐进的过程,或者说是了解自己的过程。 2,当自己判断能力有限的时候,可以从一本编程基础书开始,比如C#图解教程;当这个掌握之... 阅读全文
posted @ 2012-06-17 14:09 永远的麦子 阅读(7065) 评论(44) 推荐(21) 编辑
读<<CLR via C#>>总结(8) 属性
摘要:属性看起来像字段,但本质上是方法。使用属性保持了较好的数据封装,它使类型的数据字段不会被公开,从而确保了对象的状态永远不被破坏。一,定义属性 代码如下:public sealed class Employee { //私有字段(支持字段) private string name; private int age; public string Name { get//get访问器 { return name; } ... 阅读全文
posted @ 2012-06-11 16:33 永远的麦子 阅读(1380) 评论(6) 推荐(2) 编辑
读<<CLR via C#>>总结(7) 以传引用的方式向方法传递参数---ref&out
摘要:默认情况下,CLR假定所有方法参数都是传值的。 对于引用类型,对一个对象的引用(指向对象的一个指针)会传给方法,但是这个引用本身是以传值的方式传给方法的。方法能修改对象,调用者能看到这些修改。 对于值类型,传给方法的是实例的一个副本。方法获得的是一个值类型实例副本,所以调用者中的实例不受影响。 代码如下:namespace refDemo2{ class Program { static void Main(string[] args) { int i = 5; AddI(i); ... 阅读全文
posted @ 2012-06-09 10:24 永远的麦子 阅读(675) 评论(0) 推荐(0) 编辑
由String类的Split方法所遇到的两个问题
摘要:由于最近在项目中有一个需求需要用到字符串的拆分,然后将拆分后的元素逐个加到一个listview控件中。代码如下:namespace InitalTest{ class Program { static void Main(string[] args) { string s = "1+2+3+4+5+6"; //问题1:Split方法第一个参数是一个string[]对象,为什么有些方法当参数为string的时候不用new运算符呢? string[] sArrs = s.Split(new... 阅读全文
posted @ 2012-05-25 12:18 永远的麦子 阅读(1145) 评论(2) 推荐(2) 编辑
读<<CLR via C#>>总结(6) 详谈实例构造器和类型构造器
摘要:一,实例构造器(构造函数) 实例构造器是允许将类型的实例初始化为良好状态的一种特殊方法,它在类的每个新实例创建的时候执行。 代码如下:namespace ConstructorDemo1{ internal sealed class MyClass//字义类 { DateTime TimeOfInstantiation;//声明字段 public MyClass()//构造函数 { TimeOfInstantiation = DateTime.Now;//初始化字段 } } class P... 阅读全文
posted @ 2012-04-09 21:51 永远的麦子 阅读(542) 评论(0) 推荐(0) 编辑
读<<CLR via C#>>总结(5) 如何合理使用类型的可见性和成员的可访问性来定义类
摘要:一,类的可见性 类有两种可见性。 1,public,对所有程序集中的代码可见。 2,internal,仅对定义它的程序集中的代码可见,对其它程序集中的代码不可见。 注:如果没有显式声明类的可见性,C#编译器默认设置为internal。二,类的成员的可访问性 类的成员共有六种可访问性,这里总结了最常用的三种可访问性修饰符,它们的限制性从上到下,限制性由最大到最小排列。 1,private,只能由定义它的类型中的方法访问。 2,protected,与private相同,除了它允许它的派生类中的方法访问。 3,public,没有访问限制。 注:如果没有显式声明成员的可访问性,C#编... 阅读全文
posted @ 2012-04-05 16:55 永远的麦子 阅读(702) 评论(0) 推荐(0) 编辑
读<<CLR via C#>>总结(4) 值类型的装箱和拆箱
摘要:值类型是比引用类型更"轻型"的一种类型,因为它们不作为对象在托管堆中分配,不会被垃圾回收,也不通过指针来引用。但在许多情况下,都需要获取对值类型的一个实例引用。为了将一个值类型转换成一个引用类型,要使用一个名为装箱(boxing)的机制。一,装箱 装箱即将一个值类型转换成一个引用类型,下面是总结对值类型的一个实例进行装箱时内部发生的事情: 1,在托管堆中分配内存。内存量是值类型的各个字段需要的内存量加上托管堆的所有对象都有的两个额外成员(类型对象指针和同步块索引)需要的内存量。 2,将值类型的字段复制到新分配的堆内存。 3,返回对象的地址(或称指针)。现在,这个地址是对一个 阅读全文
posted @ 2012-04-02 12:14 永远的麦子 阅读(506) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示