10 2015 档案

摘要:1.建议避免使用new修饰符来重新定义非虚函数。 非虚方法是静态绑定的,不管哪里的代码也不管在哪里引用, 它总是严格的调用类中所定义的函数。并不会在运行时在派生类中查找不同的版本.2.何时使用new?基类与派生类都已经存在了,是后来添加的继承关系,结果在添加继承关系时,发现两个类中使用了同样的方法名... 阅读全文
posted @ 2015-10-28 22:50 王乐 阅读(146) 评论(0) 推荐(0)
摘要:此篇是对00中第3点的再一次阐述。1.如果一个属性返回一个引用类型,那么调用者就可以访问这个对象的公共成员,也包括修改这些属性的状态。public class MyBusinessObject { // Read Only property providing access to a privat... 阅读全文
posted @ 2015-10-27 22:40 王乐 阅读(241) 评论(0) 推荐(0)
摘要:1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的 基类是描述对象是什么,接口描述对象有某种行为。2.不能在接口里提供任何成员的具体实现.只是定义属性,事件和索引器等。抽象基类可以为派生类提供一些具体的实现,另外也描述了一些公共的... 阅读全文
posted @ 2015-10-26 22:38 王乐 阅读(394) 评论(0) 推荐(0)
摘要:LINQ 1.查询操作符 (1)源起 .net的设计者在IEnumerable等接口基础之上定义了一系列的扩展方法来方便用户操作集合对象,这些扩展方法构成了LINQ的查询操作符 (2)使用 这一系列的扩展方法,比如:Where,Max,Select,Sum,Any,... 阅读全文
posted @ 2015-10-25 09:47 王乐 阅读(163) 评论(0) 推荐(0)
摘要:这一讲,来说说集合。因为linq主要用于对数据源进行查询,集合是最常见的数据源。 集合 形式: 数组,列表List Arraylist等。 特点: 可通过索引或键访问。可进行foreach循环。可通过属性获取成员数量。包含添加和移除成员的方法。 迭代器 · (1)使用 我们... 阅读全文
posted @ 2015-10-25 09:46 王乐 阅读(164) 评论(0) 推荐(0)
摘要:在说LINQ之前必须先说说几个重要的C#语言特性一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前,在声明一个变量的时候, 总是要为一个变量指定他的类型甚至在foreach一个集合的时候, 也要为遍历的集合的元素,指定变量的类型隐式类型的... 阅读全文
posted @ 2015-10-24 10:05 王乐 阅读(189) 评论(0) 推荐(0)
摘要:1.如下这段代码会经历装箱和拆箱。例如25会先装箱成object后传递给writeline方法(一次拷贝),在方法内部又经历拆箱成int(第二次拷贝)后然后调用tostring().Console.WriteLine("A few numbers:{0}, {1}, {2}", 25, 32, 50... 阅读全文
posted @ 2015-10-19 22:49 王乐 阅读(163) 评论(0) 推荐(0)
摘要:1.申请和释放一个基于堆内存的对象要花上更多的处理器时间。 所以当一个引用类型的局部变量在常规的函数调用中使用的非常频繁时应该把它提升为对象的成员(方法一)2.当你把一个实现了IDisposable接口的局部变量提升为类型成员时,例如字体或连接,你的类同样也应该实现IDisposable接口(见原则... 阅读全文
posted @ 2015-10-18 22:02 王乐 阅读(144) 评论(0) 推荐(0)
摘要:1.任何时候你在使用一个有Dispose()方法的类型时,你就有责任来调用Dispose()方法来释放资源。 最好的方法来保证Dispose()被调用的结构是使用using语句或者try/finally块public void ExecuteCommand( string connString, s... 阅读全文
posted @ 2015-10-18 20:52 王乐 阅读(248) 评论(0) 推荐(0)
摘要:1.数据量不大的时候取出数据缓存于服务器,然后排序,筛选等基于缓存进行以提高效率。 排序或筛选的方法是使用集合类型提供的,如List.sort() List.Findall()2.筛选方法: List.FindAll(Predicate match) 讲解:Predicate封装筛选的规则,它的位置... 阅读全文
posted @ 2015-10-18 09:59 王乐 阅读(332) 评论(0) 推荐(0)
摘要:1.在一个类里声明变量的同时,直接创建实例值.包括静态的和实例的变量例:object m_o = new object(); 如下情况时不建议这么做:第一种 值类型。int i=new int();//会产生装箱 第二种。两个构造函数。对此种情况你有可能有疑问,你不是建议初始化吗?为什么这里不推荐... 阅读全文
posted @ 2015-10-17 19:49 王乐 阅读(158) 评论(0) 推荐(0)
摘要:1.C#的foreach语句可以为你的任何集合产生最好的迭代代码 不推荐如下写法(?原因未明白 作者意思是阻碍jit边界检测)int len = foo.Length; for ( int index = 0; index < len; index++ ) Console.WriteLine( fo... 阅读全文
posted @ 2015-10-15 22:52 王乐 阅读(189) 评论(0) 推荐(0)
摘要:1.当你创建你自己的类型时(不管是类还是结构),你要定义类型在什么情况下是相等的。C#提供了4个不同的方法来断定两个对象是否是相等的public static bool ReferenceEquals ( object left, object right ); public static bool... 阅读全文
posted @ 2015-10-13 22:36 王乐 阅读(213) 评论(0) 推荐(0)
摘要:1.决不要创建一个不包括0在内的枚举类型2.举例如下:public enum Planet { Mercury = 1, Venus = 2, Earth = 3, Mars = 4, Jupiter = 5, Saturn = 6, Neptune = 7, Uranus = 8, Pluto ... 阅读全文
posted @ 2015-10-11 22:15 王乐 阅读(139) 评论(0) 推荐(0)
摘要:1.泛型,类型或方法的一种抽象概括。2.泛型类:在类型名后面加一个,其中传递占位符,也就是类型参数.where是类型约束 可以再查资料public class SortHelper where T:IComparable{ public void Sort(T[] array) ... 阅读全文
posted @ 2015-10-11 10:28 王乐 阅读(151) 评论(0) 推荐(0)
摘要:1.类型:值类型 引用类型。 分类依据:类型在内存的分配方式。值类型在堆栈,引用类型在托管堆。 名词:栈--所有变量都会被分配在栈上,只不过值类型直接含有数据,引用类型含有一个指向托管堆对象的地址。 含有一个堆上对象的地址的变量叫变量指向此对象或变量引用此对象。 值类型:简单类型(基类库类型别... 阅读全文
posted @ 2015-10-11 09:51 王乐 阅读(200) 评论(0) 推荐(0)
摘要:1.恒定类型就是一但它们被创建,它们(的值)就是固定的. 恒定类型可以很好的在基于哈希代码的集合上工作。以Object.GetHashCode()方法返回的值,对同一个实例是必须相同的2.一个客户类型就不是原子类型;它是由多个不同的恒定的组成部份构成的:地址,名字以及一个电话号码集合。3. 可变类型... 阅读全文
posted @ 2015-10-10 23:10 王乐 阅读(242) 评论(0) 推荐(0)
摘要:1.设计一个类型时,选择struct或者class是件简单的小事情,但是,一但你的类型发生了改变,对所有使用了该类型的用户进行更新却要付出(比设计时)多得多的工作.2.值类型:无多态但性能佳。 值类型(结构)存储数据,而引用类型(类)表现行为或职责。3.public class C { privat... 阅读全文
posted @ 2015-10-08 21:43 王乐 阅读(137) 评论(0) 推荐(0)
摘要:1.System.Object版的ToString()方法只返回类型的名字2.知道要重写它,返回更有意义的信息,最好是提供几个重载版本.3.当你设计更多的复杂的类型时(格式化文本)应该实现应变能力更强的IFormattable.ToString()4.例子public class Customer ... 阅读全文
posted @ 2015-10-07 22:16 王乐 阅读(157) 评论(0) 推荐(0)
摘要:1.用as运算符进行类型转换。因为比起盲目的强制转换它更安全,而且在运行时效率更高。 安全体现在:as操作符就算是转化一个null的引用时,也会安全的返回一个null而不会像强制转换抛出异常。2.as和is运算符在运行时要检测转换目标的类型。如果一个指定对象不是要求转换的类型,或者它是从要求转换类型... 阅读全文
posted @ 2015-10-06 18:23 王乐 阅读(151) 评论(0) 推荐(0)
摘要:1.对于常量,C#里有两个不同的版本: 编译时常量--效率相比更高些,但可维护性不好,保留的目的是为了性能。const关键字申明 public const int _Millennium = 2000; 运行时常量--效率稍低些,可维护性好。readonlyc关键字声明,也叫只读变... 阅读全文
posted @ 2015-10-05 20:00 王乐 阅读(162) 评论(0) 推荐(0)
摘要:1.属性可以进行数据绑定2.可以做数据安全校验。在对数据检测时,如果发现数据不满足条件,最好以抛出异常的形式来解决 如下代码不可取public string Name{ get { if(this._Name==null) { return “NoNam... 阅读全文
posted @ 2015-10-05 19:26 王乐 阅读(197) 评论(0) 推荐(0)
摘要:1.浏览代码结构 类视图2.重构功能 提取长的的方法体中的部分方法到单独函数中 路径:选择代码段,右击重构----提取方法3.代码结构 a 代码对齐点【编辑】-【高级】-【设置选定内容的格式】或者按Ctrl + K 然后再按Ctrl + F 就好了4.调试 a.退出单步调试shift+f11 b.... 阅读全文
posted @ 2015-10-04 14:03 王乐 阅读(135) 评论(0) 推荐(0)
摘要:1.sqlinjection 阅读全文
posted @ 2015-10-03 20:53 王乐 阅读(121) 评论(0) 推荐(0)
摘要:1. 使用 简单的配置信息,可以直接放入标记中。如: 相应访问代码如下: string fileName = System.Configuration.ConfigurationSettings.AppSettings.Get("LogFile"); 2. 自... 阅读全文
posted @ 2015-10-03 10:56 王乐 阅读(189) 评论(0) 推荐(0)
摘要:在.NET Framework中,配置几乎是无处不在的。配置是控制应用程序行为的一些设置。下面我们就来看看到底有几个配置文件,而他们又分别代表了什么?1. machine.config这个文件只有一个,顾名思义,它是控制整个物理机器级别的设置的。它的设置将影响所有的应用程序,不管是Windows F... 阅读全文
posted @ 2015-10-03 10:03 王乐 阅读(187) 评论(0) 推荐(0)
摘要:id level是属性,title为子节点接下来操作子节点比较xml的处理方式: 1和3适合数据量小的时候. 阅读全文
posted @ 2015-10-02 09:46 王乐 阅读(122) 评论(0) 推荐(0)
摘要:用户体验较长时间的运算:使用进度条(progress bar)不要阻塞界面(UI)线程;使用多线程进行长时间的运算状态栏(status bar)提示应用程序的状态操作开始之后,用户应当能够通过界面操作取消或终止较长时间的运算增强用户体验:使得用户可以通过界面来控制程序的运行在适当的时候提供必要的程序... 阅读全文
posted @ 2015-10-02 09:19 王乐 阅读(255) 评论(0) 推荐(0)
摘要:1..Net运行时调用JIT编译器,用来把由C#编译器生成的IL指令编译成机器代码。这一任务在应用程序的运行期间是分步进行的。JIT并不是在程序一开始就编译整个应用程序,取而代之的是,CLR是一个函数接一个函数的调用JIT编译器。这可以让启动开销最小化到合理的级别。那些从来不被调用的函数JIT是不会... 阅读全文
posted @ 2015-10-01 14:56 王乐 阅读(372) 评论(0) 推荐(0)
摘要:通常不建议如下的捕获方式 正确的方法是:某一功能函数的入口捕获基本异常即exception,分支方法或片段方法中捕获特定异常高级:另附:Fxcop异常监控工具 阅读全文
posted @ 2015-10-01 12:29 王乐 阅读(133) 评论(0) 推荐(0)
摘要:强命名组件:使用sn.exe生成公钥私钥对,公钥可以用工具查看。snk文件需严格保护。 sn -k d:\iron.snk 生成公钥私钥对 sn -p d:\iron.snk d:\iron.pk 提取公钥 sn -tp d:\iron.pk 查看... 阅读全文
posted @ 2015-10-01 11:14 王乐 阅读(158) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2015-10-01 10:52 王乐 阅读(137) 评论(0) 推荐(0)
摘要:程序集1.表现形式:.dll 和. exe 。2.程序集组成;PE头,CLR头,清单,元数据,CIL代码,资源文件。实际上这些内容包含在一个叫做Module的逻辑结构中。 单模块程序集:程序集就包含一个模块。程序集和模块在一个文件中 多模块程序集:程序集包含多个模块,一个主模块(必须包含清单),和程... 阅读全文
posted @ 2015-10-01 10:00 王乐 阅读(146) 评论(0) 推荐(0)
摘要:0.CIL--公共中间语言VC++:经过预编译,编译,汇编和链接生成本地可执行代码,支持它运行的是OS和本地cpu指令集。C#: 在.net框架下类似c#的高级语言经过编译生成的文件叫程序集,后缀名.dll 和 .exe。程序集由CIL语言描述。利用IL DASM查看程序集 时你会发现vb... 阅读全文
posted @ 2015-10-01 09:14 王乐 阅读(184) 评论(0) 推荐(0)