随笔分类 - C#
摘要:假设persons是实现了IEnumerable接口的可枚举集合类PersonCollection的一个对象1 foreach(Person p in persons)2 {3 Console.WriteLine(p);4 }那么翻译一下这个foreach语句,就相当于1 IEnumerator enums=persons.GetEnumerator();2 while(enums.MoveNext())3 {4 Console.WriteLine((Person)enums.Current);5 }
阅读全文
摘要:之前对委托的理解,一直局限于“委托就类似于C++中强类型的函数指针”。今天听老马跟我一讲,颇有拨云见日之感。 老马今天对我说,委托,就是定义一个传递方法的规范。 大家都说委托是一个类型,事件是个字段成员。那么既然委托是个类型,那里面有哪几部分组成来呢? 一般委托由三部分组成,分别是target,methodPtr和delegateArray。 target指的是该委托所指向的方法的所有者。若委托指向一个静态方法,例如,string.IsNullOrEmpty(),则target=null,若委托是一个实例方法,比如string s="abc",s.SubString(),则
阅读全文
摘要:学C#的好多人都提反射色变,觉得这是个很高级的东西。好吧,反射使用的技术的确高级,但是我们应用起来却是非常的容易,微软体贴的优点在这时候就凸显出来了。其实反射很简单,它的本质就是去在运行时动态的加载程序集,找出并能得到程序集中包含什么类,方法,属性和字段,并且去调用这些类,方法,属性和字段。 反射常用的类: Assembly 加载程序集用Type核心类,反射调用获得的类就靠是它保存的
阅读全文
摘要:程序集,对于C#程序员来说一定不陌生,不就是VS生成的那些exe,dll么。是的,程序集(.net中exe与dll的区别就是exe有程序接入口, 即Main函数)就是.net框架下,可以被CLR加载并运行的一堆数据集(类似java中的jar包,无法脱离虚拟机自己运行)。它们和之前C\C++ 生成的可执行程序和动态链接库有本质的区别。说了半天,程序集里到底有什么呢。作为一堆数据集,程序集的数据可以分为:类型元数据,程序元数据,IL代码,资源。 先说下什么是元数据,元数据一般就是指描述自身的数据。 程序集元数据:包含程序集的版本信息,安全信息,签名等。类型元数据:记录了程序集将引用了哪些类,用户自
阅读全文
摘要:class BigMultiply:BigCalculate {public override string Oper(string num1, string num2){if (num1.Equals("0")||num2.Equals("0")){return "0";}List liAllNum = new List();//存储乘数每位乘法的结果List liCh = new List();//存储乘数每位乘法中每一位的结果//将长度较长的数字赋给num1,方便后面计算if (num1.Length < num2.Len
阅读全文
摘要:class BigReduce : BigCalculate {public override string Oper(string num1, string num2){bool isMinus = false;//先判断计算结果是否为正数(即num1是否大于num2),如果相等,直接返回0//若结果为负数,则互换num1,num2,并在返回值前加'-'if (num1.Equals(num2)){return "0";}else if (Max(num1, num2).Equals(num2))//如果预计计算结果为负数,则将num1num2调换{Cha
阅读全文
摘要:/// ///基类,抽象类,定义常用方法 /// abstractclass BigCalculate {public abstract string Oper(string num1, string num2);//反转数字顺序protected string InvertOrder(string str){char[] chTemp = new char[str.Length];for (int i = 0; i num2.Length){return num1;}else if (num1.Length==num2.Length){for (int i = num1.Length-1;.
阅读全文
摘要:事件就是一个阉割版的委托。 事件就是一个外部不能访问,并且只能使用“+=、-=”号添加委托的类成员。 为什么事件要做成外部不能访问?如果事件可以被外部访问,那么外部就可以绕过开发者自己定义的接口,直接访问并调用委托,违反了面向对象封装的思想。 为什么事件要只能使用“-=、+=”?因为如果使用者在某一地方使用了“=”号给事件赋值,那么他会惊奇的发现之前添加的事件都被清空了....事件的本质,就是1个私有委托,和两个add、reduce函数(类似属性,实现+=、-=)
阅读全文
摘要:面向对象三大宝,继承,封装和多态。多态,是面向对象里面比较难理解的基础部分。听完老蒋的课后,我有一些自己对多态的理解,写在这里。 提到多态,就不得不说面向对象。那么什么是面向对象呢?照我的理解,面向对象就是描述和封装我们所处世界的一种方法,简单的说,就是映射世界,万物皆对象。而面向对象的伟大这时候就得以显现了一些,一个连世界都能映射出的方法,还有什么是不能做的?面向对象把我们所能看到的一切东西都看做实例,而我们给这些东西起的名字就是对这些东西的抽象,就是类。笼统点的名字就是抽象类,比如动物;具体一点的就是继承自抽象类的父类,比如猫;而再具体一点就是继承父类的子类,比如波斯猫;注意了,到现在为止
阅读全文

浙公网安备 33010602011771号