安忍不动如大地,静虑深思如秘藏
雄鹰虽然有时候飞的比鸡还低 但鸡永远也不可能飞到鹰的高度

随笔分类 -  C#

1 2 下一页
中文:一个面向对象的自然语言
摘要:一直很奇怪的一点,字母国家的人是怎么想出面向对象这个概念的,中文却是自然语言中非常具有面向对象特征的语言。 我们看看如下的表格对应 中文 英文 公鸡 Cock 母鸡 Hen 小鸡 Chick 病床 Sickbed 婴儿床 Infanette 行军床 Tent Bed 中文中对相同事物的不同形容描述在组词搭配中很容易得到归纳,而对照的英文,却无法在词面上找到共性。同样中文的组词能让没... 阅读全文
posted @ 2009-08-04 22:50 害羞的狮子王 阅读(213) 评论(0) 推荐(0)
类是数据类型,对象是内存的具体分配
摘要:对于初学面向对象的人来说,往往很疑惑什么是对象,什么是类。在面向对象的编程领域中,我们需要明确一个事实:所有的类型必须被明确的表示,而不是被其他数据类型来替代。 类是 C# 中功能最为强大的数据类型,它定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。类支持继承,而继承是面向对象编程的基础部分。 比如我们在前面了解的一个关于洗牌的过程,在前面的代码中,我们计算和产生的不是真... 阅读全文
posted @ 2009-08-04 22:08 害羞的狮子王 阅读(445) 评论(0) 推荐(1)
层层清晰:面向对象的代码模型
摘要:好了,在经历了面向过程的代码之后,我们来观察以下使用面向对象思路的代码: string s = "12.14"; bool format = true; int precision = 2; char symbol = '$'; if (s.LastIndexOf(symbol) > 0) { //货币负号非法 format = false; } s = s.Replace(symbol, ... 阅读全文
posted @ 2009-08-01 17:07 害羞的狮子王 阅读(279) 评论(0) 推荐(1)
意大利面条:面向过程的代码模型
摘要:面向过程的代码往往被人形容为意大利面条。先让我们看看以下面向过程思路的代码编写。 string s = "12.14"; bool format = true; int precision = 2; char symbol = '$'; if (s.LastIndexOf(symbol) > 0) { //货币符号非法 format = false; } else { if (s.LastI... 阅读全文
posted @ 2009-08-01 17:05 害羞的狮子王 阅读(698) 评论(0) 推荐(1)
Stack和Queue:后进先出和先进先出
摘要:Queue是先进先出的集合而Stack是后进先出的集合。这两个集合在日常的工作中也经常会用到。Queue相当我们去银行柜台排队,大家依次鱼贯而行。Stack象我们家中洗碗,最后洗好的碗叠在最上面,而下次拿的时候是最先拿到最后叠上去的碗。了解了这样场景,就很容易明白Stack和Queue可用在哪里了。 比如我们为医院作一个排队叫号的系统,那肯定是选择Queue对象处理。如果我们要为出牌或下棋准备一个... 阅读全文
posted @ 2009-07-30 21:47 害羞的狮子王 阅读(984) 评论(0) 推荐(0)
StringBuilder:字符串构建
摘要:String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。 StringBuilder可以在实例化的时候... 阅读全文
posted @ 2009-07-30 21:45 害羞的狮子王 阅读(409) 评论(0) 推荐(0)
String:本质上是字符数组
摘要:String用来表示文本,即一系列 Unicode 字符。字符串是我们开发过程中频繁使用的对象,我们在软件界面上提示用户的所有一切都是字符串:不管是发票的日期还是发票的编号,或者是发票的金额虽然在定义数据类型时候分别应该是DateTime、double或string,但当界面呈现的时候,都是以文本的形式呈现,也就是string格式。 字符串的声明非常的简单,使用””(双引号)描述内容。 sta... 阅读全文
posted @ 2009-07-30 21:32 害羞的狮子王 阅读(1192) 评论(0) 推荐(0)
Math:处理数学计算的工具
摘要:在软件开发过程中,我们有时候需要进行些数学计算,除了简单的四则运算外,我们也许会涉及到三角函数、对数等数学应用。.Net提供了System.Math类辅助我们完成工作。 以下代码演示了Math的基本能力: System.Console.WriteLine(System.Math.Abs(-12.01));//绝对值 System.Console.WriteLine(System.Math.P... 阅读全文
posted @ 2009-07-30 21:29 害羞的狮子王 阅读(1142) 评论(0) 推荐(0)
Enum:枚举
摘要:枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。同一个值可以分配给多个字段,出现这种情况时,必须将其中某个值标记为主要枚举值,以便进行反射和字符串... 阅读全文
posted @ 2009-07-30 21:28 害羞的狮子王 阅读(466) 评论(0) 推荐(0)
Random:随机值的处理:发牌游戏
摘要:伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了。Random 类的当前实现是基于 Donald E. Knuth 的减随机数生成器算法的,它提供我们产生随机的整数、双精度随机数和字节随机数。 以下是模拟投掷硬币两面的代码,需注意的是:Next产生的是从第一个参数开始,无限的趋向第二个参数... 阅读全文
posted @ 2009-07-30 21:10 害羞的狮子王 阅读(382) 评论(0) 推荐(0)
ArrayList:可变数组
摘要:数组用于定义长度不变的集合,但是在实际的处理过程中,我们往往对集合的大小并不确定,因此在实际的开发工作中,我们更多的需要处理集合元素。ArrayList是一个可变数组,其变在于两点: 集合的大小可变 集合中存放的数据类型可变 我们看以下的代码案例: System.Collections.ArrayList list = new System.Collections.ArrayList();... 阅读全文
posted @ 2009-07-30 21:07 害羞的狮子王 阅读(697) 评论(0) 推荐(0)
Hashtable:仅有两列的表
摘要:Hashtable集合和ArrayList、Stack和Queue都不一样,该集合可用看作是一个仅有两列的表格,第一列是键,存放的是唯一不可重复的值。第二列是值,随便放什么都可以。由于Hashtable这样的特征,所以这个集合不适合放置顺序的值,却可以放置些能被唯一标识的值。比如以下代码说明了这个现象: System.Collections.Hashtable phoneBook = new S... 阅读全文
posted @ 2009-07-30 21:03 害羞的狮子王 阅读(356) 评论(0) 推荐(0)
Array:一组数据的有序集合
摘要:数组是一种数据结构,它包含若干相同类型的变量。数组的定义是:在内存中连续开辟的空间,该空间中存储着一组相同数据类型的值。 数组具有以下属性: 数组可以是一维、多维或交错的。 数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。 交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。 数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。 数组... 阅读全文
posted @ 2009-07-30 20:46 害羞的狮子王 阅读(428) 评论(0) 推荐(0)
结构化编程的三重境界:见山还是山:朴素又正确的逻辑
摘要:在上述的隔夜退房的逻辑代码中,我们用了五个嵌套,其中有五个计算,但实际上只有3种不同的计算,在这样的模式下,我们值得思考,是不是代码过于冗余了。现在我们把隔夜代码改为如下[代码]不必惊讶,你仔细看看,以上的代码就完成了我们原先冗余的隔夜退房逻辑,而这样的逻辑和我们原先描述的退房业务逻辑正好在语义上完全符合。通过正确的结构化编程,我们可以消除原先复杂冗余的代码,让程序更加清晰可靠。下面添加了对日期合... 阅读全文
posted @ 2009-06-21 09:10 害羞的狮子王 阅读(293) 评论(0) 推荐(0)
结构化编程的三重境界:见山不是山:正确但冗余的逻辑
摘要:因此我们了解到,我们需要更加精确的判断时间的界限。因此我们重新将代码改为如下:[代码]上述的代码,使用了4个条件的嵌套判断,将退房的时间作了精确的判断(考虑到了分秒的临界点),同时初学的人员再次要了解到注释的重要性,以上的逻辑,如果不描写注释,估计过一个月后,你自己都不知道自己在干什么了。现在我们运行程序,设定以下的时间段[代码]我们程序的运行结果得到了我们乐于见到的5.5天结构化编程,还有一个重... 阅读全文
posted @ 2009-06-21 09:09 害羞的狮子王 阅读(297) 评论(0) 推荐(0)
结构化编程的三重境界:见山是山:朴素的直观逻辑编程
摘要:《五灯会元》卷十七中,有一则青原惟信禅师的语录:“老僧三十年前未参禅时,见山是山,见水是水。及至后来亲见知识,有个入处,见山不是山,见水不是水。而今得个休歇处,依前见山只是山,见水只是水。”这描述了我们对世界的一个观察和思考的过程,只要我们对事物进行执着的观察和思考,那在认识事物的过程中总是会经过以上的三个不同的过程和境界。我们在本节,将通过一个案例描述作为程序员应如何对待... 阅读全文
posted @ 2009-06-21 09:06 害羞的狮子王 阅读(284) 评论(0) 推荐(0)
数据类型转换:1人民币+1美元=?
摘要:数据类型转换是我们从小学就开始学习的内容,只不过在小学我们称为单位换算。比如一条狗加一匹马等于是多少呢?总不是两条狗或两匹马吧。我们需要把单位转为都可以计算的单位,比如动物。结果就是两只动物。这样的转换,我们称为数据类型转换。在C#中数据类型转换又分为隐式转换和显式转换。隐式转换是默认的转换,而显式转换就是必须明确说明的转换。比如¥1+$1的问题,在国际贸易结算中,默认将人民币转换为美元,那计算的... 阅读全文
posted @ 2009-06-21 09:03 害羞的狮子王 阅读(441) 评论(0) 推荐(0)
值类型和引用类型和数据大小排名
摘要:在2.2.1我们对C#的基本数据类型有了基本了解。C#将数据类型分为:值类型、引用类型和指针类型。通用类型系统支持两种一般类别的类型,每一类都细分成子类别: q 值类型:值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。值类型可以是内联的(由运行库实现)、用户定义的或枚举的。有关内联值类型的列表,请参见 .NET Framework 类库。q 引用类型:引用类型存储对值的内存地... 阅读全文
posted @ 2009-06-21 09:02 害羞的狮子王 阅读(419) 评论(0) 推荐(0)
异常:Exception
摘要:我们开发了函数,当函数的调用者在使用函数的时候,我们希望函数的调用者可以正确的使用函数,比如给予函数正确的参数值。但在实际的过程中,函数的调用者可能由于各种原因给予了错误的值。在这种情况下,我们需要向调用者抛出错误信息,并中断程序的执行,这个过程我们称为异常。程序必须能够统一处理在执行期间发生的错误。公共语言运行库提供了一个模型,以统一的方式通知程序发生的错误,从而为设计容错软件提供了极大的帮助。... 阅读全文
posted @ 2009-06-21 09:00 害羞的狮子王 阅读(401) 评论(0) 推荐(0)
模块化编程:函数定义
摘要:在软件开发的过程中,我们经常会重复的使用一些代码片段,因此我们往往将这样的代码片段作为函数进行调用。函数有4种模式的定义和使用q 有参数,有返回值:y=f(x)q 有参数,无返回值:f(x)q 无参数,有返回值:y=f()q 无参数,无返回值:f()在游戏、图形、建筑领域的软件应用中,我们经常需要计算几何图形的面积。对于这些经常需要使用的计算,我们往往将计算的代码封装为函数进行使用。[代码]我们来... 阅读全文
posted @ 2009-06-21 08:58 害羞的狮子王 阅读(410) 评论(0) 推荐(0)

1 2 下一页