《C#菜鸟成长日志(创世篇)》

来源:互联网 发布:mysql split 逗号分隔 编辑:程序博客网 时间:2024/05/29 03:48

人物志

蔡晓茹(儒篇)

夏有稻(道篇)

赵半佛(佛篇)

 

[1]起于具象,止于抽象

书是越读越薄的,再薄也有页数

[2]跨越边界

去了解程序员在其他语言中的使用

[3]...

 

 


 

胡乱先记一下:

 

有打算整《一个C#菜鸟成长系列》,
时间定在某些事项完成之后,12月份吧。

作为一个菜鸟,
走到这一步真的不容易,
断断续续前后经历有三个月左右的时间.

由于要整个论文,
被迫走上了C#的学习之路,
之前有一点很弱的VC++学习过程.

论坛里好多好多朋友,会问起怎样学好C#的问题.

今天不想多写,给一些我本人的体会吧...
[1]分清语言与框架
一定要从语言开始学习,尽可晚一点接触一些框架,其它除非是必要的。
比如System,Collections(.Generic)初上手有这三个足够了。

[2]用控制台模板,多写代码
控制台下只需要:
Console.WriteLine();Console.ReadKey();
为了能够集中关注的语法点,尽可能排除不需要的干扰。
要写一遍,调一遍。不要复一遍,看一遍。

[3]从开始就关注语法特性。
不要默视眼前的一切,多留个心眼,为什么?!
我的“技巧”是:遇到这些最“础基”的地方,试试用VB.net来一遍,破除你的想当然。
----------------------------
int[] i_s1 = { 1, 2, 3 };//最简单的写法
int[] i_s3 = { 1, 2, 3, };//多个","
int[] i_s4 = new[] { 1, 2, 3, };
int[] i_s5 = new int[] { 1, 2, 3, };//虽然是最普通的写法,也要想想为什么这样
//var i_s6 = { 1, 2, 3 };//这样是不行滳
var i_s6 = new [] { 1, 2, 3 };//C#3.0的新特性啊
var i_s7 = new int[] { 1, 2, 3 };
//Array <int> i_s6 = new int[] { 1, 2, 3, };//想想看,为什么不是这个语法,回过头来看历史

[4]开始就要有大局观
虽然基础知识是慢慢积累的,
但是给自己先打一个底稿,一样样往里填,
分类上保持“简练”,然后个个击破。
我自己开出的第一个“单子”
--------------------------
C#的语言之本:类型/Type
[1]类
[2]结构
[3]枚举
[4]委托*
[5]接口*
[6]数组

[7]匿名类型(隐式)

---------------------------
先易后难,最重要的是反复对比,
破除想当然的思想,打破常规习惯。
接口与委托对初学者相当的困难,
对比(比如写法上的比较)有助于加深理解
(用其它语言作对比也是很好的办法)

[5]....[n-1]
还有好多好多,有机会一一道来。

[n]
学语言的人,悟性很重要,
为啥很多朋友感觉学的很多,掌握的也不错了,
当自己独立完成一段代码,或一个项目时,
又会感觉到脑袋空空...
道理:
死记+模仿是初级阶段,这个不能丢。
最忌讳的还是CP大法,我想最好的办法,
就是逼着自己去:用尽所有的方法,来达到一个目的。
这是“悟”的开始,
然后找一些牛人+牛方法,来考验自己,
这是“悟”的练级,
最后是跳出语言,来观察语言做了些什么,
也就是对比看看:别的语言是不是有更好的优势,
语法糖的背后是些什么(就我本人而言,不喜欢IL)
秘籍就是:反复的试验,还有直接近进语法规范寻根也是不错的选择。
悟就是一个:迭代,反复,痛苦,化茧为蛹的过程,
---------------------
可能在C#中最可能的就是“委托”了,远远不只书上一点点的小知识...
要悟的东西不要书上:
委托为什么是一个观察者模式,
委托的异步实现在一些类中(request..)是一个伪命题,(当然你先得知道这个“真命题”)
--------------------
大哲是大语:他们考虑的是要实现些什么
小人是小悟:我们考虑的是为什么这样实现,所以多看看语言设计者的博客,也许会给你一些灵感。

呵呵:
public class ArrayList : IList, ICollection, IEnumerable, ICloneable

IList : ICollection
Eric说这两种写法是一样的,仅仅是为了看起来直观一点

    Allen,
    I think that readability would be the primary reason people would do this.
    Eric
    Allen, what you’re seeing is simply a doc thing. ArrayList actuallyonly implements IList directly, but we decided in V1.0 of the docs, tohighlight the interface hierarchy so you didn’t have to wonder ‘whatdoes IList implement’, you get to see it there on the type.
    There is no benefit to ACTUALLY doing this. Try this code, and you’ll see it compiles:

[其它]
相比(委托+匿名方法)/接口而言,lamada表达式是简单的(看上去眼花缭乱而己)
C#应该是越学越简单,刚刚开始
开始的小痛是独立写那个HelloWorld!
刚开始的最痛苦的莫过于过“多态”这个槛!!

原创粉丝点击