| 玉丰's profile做永远的学生!BlogListsNetwork | Help |
做永远的学生!人的一生应该这样度过,当你回忆往事时,不因碌碌无为而羞耻,不因虚度年华而悔恨... |
|||||||
|
|
June 17 (笔记)将指定数组中的N条SQL语句同步执行protected static int dbExecuteSqls(string[] strSQLs) try try foreach(string str in strSQLs) (自勉)热爱生命-汪国真
●汪国真
May 18 Static 属性(变量)测试 原来一直以为是这么回事,却一直心中不踏实,于是试试.......嗨!! 还真是这么回事!
--------------------------------------------------
class A
{ public static int a = 0; } -------------------------------------------------
class B
{ public void giveA1() { A.a = 1; } }
---------------------------------------------------
class C
{ public void addA1() { A.a = A.a + 1; } } ----------------------------------------------------
class Program
{ static void Main(string[] args) { Console.WriteLine(A.a.ToString()); B a = new B();
a.giveA1();
Console.WriteLine(A.a.ToString()); C c=new C();
c.addA1();
Console.WriteLine(A.a.ToString()); c.addA1();
Console.WriteLine(A.a.ToString()); } }
------------------------------------------------------
输出结果:
May 16 路漫漫其修远兮(初学设计模式有感) 最近刚刚开始了设计模式的学习,经过"乱花迷眼"的迷惘......才发现在编程的世界里,我还不能算得上一个"孩子",最多是刚刚入门的"婴儿"....还是要先谢谢李昊原师兄,每当我迷惘的时候,差不多都是这位神来"当头棒喝",使我少走上不少的弯路,呵呵.
May 10 属性的Get与Set方法 C#语言有两个函数--一个赋值函数(get),一个取值函数(set),这从它生成的中间语言代码可以清晰地看到。C#不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。下面是一个典型的属性设计: using System; class MyClass { int integer; public int Integer { get {return integer;} set {integer=value;} } } class Test { public static void Main() { MyClass MyObject=new MyClass(); Console.Write(MyObject.Integer); MyObject.Integer++; Console.Write(MyObject.Integer); } } 一如我们期待的那样,程序输出0 1。我们可以看到属性通过对方法的包装向程序员提供了一个友好的域成员的存取界面。这里的value是C#的关键字,是我们进行属性操作时的set的隐含参数,也就是我们在执行属性写操作时的右值。 属性提供了只读(get),只写(set),读写(get和 set)三种接口操作。对域的这三种操作,我们必须在同一个属性名下声明,而不可以将它们分离,看下面的实现: class MyClass { private string name; public string Name { get { return name; } } public string Name { set { name = value; } } } 上面这种分离Name属性实现的方法是错误的!我们应该像前面的例子一样将他们放在一起。值得注意的是三种属性(只读,只写,读写)被C#认为是同一个属性名,看下面的例子: class MyClass { protected int num=0; public int Num { set {num=value; } } } class MyClassDerived: MyClass { new public int Num { get { return num; } } } class Test { public static void Main() { MyClassDerived MyObject = new MyClassDerived(); //MyObject.Num= 1; //错误 ! ((MyClass)MyObject).Num = 1; } } 我们可以看到MyClassDerived中的属性Num-get{}屏蔽了MyClass中属性Num-set{}的定义。 当然属性远远不止仅仅限于域的接口操作,属性的本质还是方法,我们可以根据程序逻辑在属性的提取或赋值时进行某些检查,警告等额外操作,看下面的例子: class MyClass { private string name; public string Name { get { return name; } set{ if (value==null) name="Microsoft"; else name=value; } } } 由于属性的方法的本质,属性当然也有方法的种种修饰。属性也有5种存取修饰符,但属性的存取修饰往往为public,否则我们也就失去了属性作为类的公共接口的意义。除了方法的多参数带来的方法重载等特性属性不具备外, virtual, sealed, override, abstract等修饰符对属性与方法同样的行为,但由于属性在本质上被实现为两个方法,它的某些行为需要我们注意。看下面的例子: abstract class A { int y; public virtual int X { get { return 0; } } public virtual int Y { get { return y; } set { y = value; } } public abstract int Z { get; set; } } class B: A { int z; public override int X { get { return base.X + 1; } } public override int Y { set { base.Y = value < 0? 0: value; } } public override int Z { get { return z; } set { z = value; } } } 这个例子集中地展示了属性在继承上下文中的某些典型行为。这里,类A由于抽象属性Z的存在而必须声明为abstract。子类B中通过base关键字来引用父类A的属性。类B中可以只通过Y-set便覆盖了类A中的虚属性。 静态属性和静态方法一样只能存取类的静态域变量。我们也可以像做外部方法那样,声明外部属性。 再次入驻软创DotNet组 好长时间了,记得自己的技术之路从这里开始,现在又回到这里,坐在这陌生而又熟悉的环境里,真是"无限感慨"啊,无论如何,希望在这里自己可以一展所长,完成技术和思想的再次飞跃. May 08 原来的Blog停掉了,心痛啊 由于某种原因,原来的Blog停掉了,虽然当时写Blog的时候没什么感觉,现在猛然回头,竟也有掉上几滴泪水的冲动.毕竟是一年来,100多篇文章啊,不过这下好了,可以专心写Msn Space了.
昨天在北京,与李老师去一个公司进行学习和交流.直觉中,在技术上的感觉不多,但明确了自己下一步的目标,李老师寥寥数语,让我找到的技术停滞不前的根本原因.原因是找到了,不过能不能去做到还是未知之数. April 18 乱花渐欲迷人眼之二:能力不等于实力 乍暖还寒,转眼又是夏天,可惜身体还没做好迎接祖国花朵的准备,近两个星期一直感冒不已,以示对保定暖冬的不舍。
细数算来,E-Space的创建也近一年了。一直以来被人以“高手”相称日子久了,仿佛间便觉自己俨然是“高手”了……“乱花渐欲迷人眼 浅草才能没马蹄”。乱花纷飞,好个艳丽的景致。然而终究还是有“浅草”的,高手的称号万万是当不起的,要是自以为称的上了,便得上了“编程高手综合症”,症状如下: 结其症结,浮躁却也不是最大原因,因为患此症者钻研“新技术”时却也是一步一步,稳扎稳打。那么,“编程高手综合症”到底是由何而来呢?我想了很久,才发现这是一个能力与实力的辩证问题。 能力,是一种势能,蕴含于内,却未曾发动,能做到某种程度,或能达到某个目标。比如:我自信能一次不停跑完3000米,虽还未尝试,但我相信自己有这种势能,这便是能力。 实力与能力不同,实力是能力的“实例化”,是做到某个程度,达到某个目标。这里也是有个例子的:长跑运动员有不停跑完3000米的实力。 Now,问题浮出水面:我与长跑运员赛跑3000米,谁赢?答案不言自喻。 “编程高手综合症”的本质在于总是把目标变成可能,成为能力,却不能“把3000米真正跑完”,把目标变成实力。于是,能力超强,实力低下。 “能做”与“做到”是两个不同的概念呢!!! April 16 乱花渐欲迷人眼,浅草才能没马蹄“乱花渐欲迷人眼,浅草才能没马蹄”。莫名中想起了这句诗,突然间心中一动,朦胧中仿佛又回到2年前经常伏在案头奋笔,张狂中写下不知天高地厚的句子......又回到彻夜不眠,只为游戏中经验值上升几个百分点.....又回到肆无忌惮的大笑的日子..... 不知道多年之后,会不会又是这样看现在的自己呢?深夜,这是一个我常常在纸上写下的词,我喜欢深夜,虽有淡淡的疲惫,却多了平时很难享有的宁静。我是向来不喜欢教科书上写死的东西的,但朱自清的一段话我却一直深有体会:“在这苍茫的月下,什么都可以想,也什么都可以不想。” 原话我早已忘却了,但这神韵我却常常沉浸其中。 好久不写这么多“无所谓有”的东西了,今天恰巧在MSN上开通了个Blog(做备份用),看了几篇别人的小文,发现自己真的变了。好多人都说“好女不嫁IT男”,大概也就是这个缘故吧。 “乱花渐欲迷人眼,浅草才能没马蹄”。这个时候提到这句话,却也不只是抒情的引子,还有着另一层含义:乱花漫天,而带来春天的小草却还没长成,艺未成而学者怠....以为戒。 四级啊,真的好重要!昨天来了个老外,进到办公室,前台小姐左看右看,大家都在打游戏: 博客初,心本切.... 写过大约有一百篇博客了吧,基中大多是技术的积累。试过了N多的博客,终于决定在Msn Space安家了,不过以前发的博客90%都在这里:
这里的博客也会在上面的地址出现 ,目前那个地址不太稳定,不过如有变化,我会更新链接的。
第一篇的博客就先到这里的,以后会常来的。
|
||||||
|
|