.net很庞杂,学习最忌讳什么?为了学而学,而不是为了用而学。我们不是为了成为教师,所以不要成为书呆子,不要成为”博士“,要从庞杂的技术群中选择自己需要的内容进行学习。

如果不加选择,一股脑的去学,这种”参考书式“学习接触一堆信息,不假思索,结果只会培养一个万事知晓,却不擅长运用的人。要思考技术的构成,想想怎么运用组合,将零散的技术有机构成一个整体,这样才是有目的,为运用而学。

首先是语法类的技术要点分析。众所周知,算法+数据结构=程序,这个公式是最基础的概念,但是现代语言为何却不是这种简单的构成模式,反而增加了很多”不相干“的内容?那些内容是什么?

我认为所有不相干的内容,实质就是”约定“,”约定“的目的是为了协作,是为了人与人之间的交流,而不是程序的运行机体。现代语言,关注的不是程序本身,而是强调人与人之间的沟通。请谨记这点。

因此,我将语言学习分成三个主要部分,1.约定,2,算法,3,数据结构。

.net不是一个语言,他主要特点是包含了一个庞大的类库,但是类库重点在于知其功能,学习上较为简单。

何谓”算法“,就是构成运行机理的部分。如:变量,流程控制结构,枚举,表达式。这些部分几乎每一种语言都不会有太大的差别,变量存储中间数据,表达式进行运算,控制结构执行选择,重复操作,枚举这些标明常量。高级内容包括异常控制,异步编程。

差异大的部分是”约定“,比如入口函数main就是一个约定。还有组织约定:命名空间。甚至标识符的组成要求,都算是一种约定。有一些约定是强制性的,有一些约定是非强制性的,比如”注释“是一种非强制性的约定,它只是告诉阅读者这是什么,而不对程序本身产生任何影响。要记住,”约定“的主要目的就是人与人之间的交流,所以”注释“也是强化交流的一个方式,应该视为写程序的一部分。

相对于“注释”,“单元测试”和“代码协定”提供强制的规格保证,

类型是一个约定,提供一个使用的界面。object公共基类也是一个标准的界面。类型可以扩展,增加新的实现和界面。但是更加纯粹的界面是”接口“。一般基于接口编程,将类型视为具体实现来简化认知。

泛型是比单一类型更宽的界面,因此应该首先考虑这一技术。泛型接口是.net提供的最强大的界面。

何谓”数据结构“,即数据单元的有机集合,不同集合有不同的构成方式,这就是”结构性“,”结构性“产生了对应的高效率算法设计。因此”算法+数据结构“是双辅双成的,因为算法的需要所以选择某一数据结构,也因为结构的特性,选择某一算法设计。

简单的数据结构是数组,.net中的数据结构实现,一般都实现了”枚举器“接口IEnumerator,这是一个关于数据结构的高层界面。.net已经提供大量的数据结构实现供我们使用。它们是“集合”类型的子类,同时还有并行版的兄弟类。

重点说一下“类”,类是一种约定,一个规格描述和界面,包含丰富的内涵。首先包含数据成员,函数成员,还有成员的访问权限控制,生存期控制,资源控制,可扩展性控制,书写方式控制(语法糖),类型转换,运算符支持。特性非常多,要考虑不同的特性组合,来书写代码。

类是一个高级界面,有很多控制特性,而“委托”就相对简单,它只是对应函数的界面。基于委托变量,“事件”提供了一个特殊的运用界面,它标明自身将引发事件,而由调用方提供处理事件的函数。这在类中,不同于一般的数据成员,也不同于函数成员。

.net中有三个特殊的组成部分,1.linq,2.lambda,2.xaml,3.正则表达式。这三个属于“语言”,也就是和c#是同类性质的。linq专职数据结构的查询,lambda是表达式,用来强化c#的语言功能,xaml用来描述界面,而正则表达式专职字符串的处理。

然后,庞杂的.net剩下的就是比较容易掌握的类库,如:集合,动态语言扩展,反射,安全,互操作,文件和注册表,事务处理,网络,windows服务,本地化,xaml,MEF,winrt,ado.net实体框架,xml,wpf,asp.net,wcf,wf,p2p,消息队列,事件日志等。

总结:

.Net学习分五类:1.约定, 2.算法, 3.数据结构,4.类库,5.部署。

约定包含:注释,单元测试,代码协定,类型,委托,事件,接口,泛型,命名空间,程序集和入口;其中类型包含数据成员和函数成员,运算符和转换等。

算法包含:一般表达式,匿名类型,lambda,linq,正则表达式,一般流程控制语句,异常控制语句,异步编程。

数据结构包含:数组,枚举器,集合等。

类库包含:集合,wpf等。

我的选型:

算法和数据结构的是基础。

约定类可以强化协作性,规范性。

类库应该进行选择,我选择是wpf, xaml做界面,集合和ado.net实体框架做数据处理与存储,wcf做客户端之间的通信,消息队列做客户端之间的协调,wf定制工作流,而winrt做跨平台的基础类库。

对.net技术组件的分析和选择的更多相关文章

  1. IAAS-虚拟化技术组件介绍

    虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正.

  2. Easyswoole的WaitGroup和Csp组件的分析和使用

    Easyswoole的WaitGroup和Csp组件的分析和使用 easyswoole可真是个好名字,只是提供了恰到好处的封装,即使是源码也保持了这样的风格.这种风格不论好坏可能都需要各位适应下,哈哈 ...

  3. Java 远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  4. Java远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  5. 基于数据形式说明杜兰特的技术特点的分析(含Python实现讲解部分)

    ---恢复内容开始--- 注: 本博文系原创,转载请标明原处. 题外话:春节过后,回到学校无所事事,感觉整个人都生锈一般,没什么动力,姑且称为"春节后遗症".在科赛官网得到关于NB ...

  6. Web系统页面打印技术实现与分析

    1 Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布.在WEB系统中,打印的确是个烦人的问题 ...

  7. WeUI Picker组件 源代码分析

    前言 由于最近做的一个移动端项目需要使用到类似 WeUI Picker组件 的选择效果,  所以在这里来分析下 WeUI Picker 的实现逻辑.(weui.js项目地址) 之前也做过类似的组件, ...

  8. PacBio三代全长转录组/Iso-Seq技术及案例分析

    参考:产品手册 PacBio三代全长转录组有什么优势? 近年来,随着高通量测序技术的发展,转录组测序已经成为研究基因表达调控的主要手段.但二代的转录本重构准确率很低,三代可以直接得到全长转录本,无需组 ...

  9. window2008 64位系统没有office组件问题分析及解决

    服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...

随机推荐

  1. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  2. golang官网可以打开了 go语言

    golang.org之前国内一直打不开,今天看了一下居然可以打开了,除了页面上youtube的视频加载不了.页面自动识别中文. 再也不用为下载go的源码发愁了.http://www.cnblogs.c ...

  3. AMD and CMD are dead之KMDjs集成Blob一键下载全部build包

    更新 不zuo,[A/C]MD就不会死,所以kmdjs赢来来其伟大的版本0.0.6,该版本主要的更新有: 移除去了kmdjs.get(..).then的支持,只支持kmdjs.get(-,functi ...

  4. 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值

    概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...

  5. collection view 开发笔记

    使用collectionView 注册的cell 不会调用 init 方法 会调用 initwith fram 方法.

  6. jQuery $(document).ready()和JavaScript onload事件

    jQuery $(document).ready()和JavaScript onload事件 Why we need a right time? 对元素的操作和事件的绑定需要等待一个合适的时机,可以看 ...

  7. 自定义AlertDialog控件的使用(AndroidStudio)

    AlertDialog 第一种:可随意自定义控件 第一步:自定义弹出的页面 ,新建一个XML页面 如下图  不需要Activity 第二步:在主页面设置一个按钮弹出上图页面  (下面是主要代码  调用 ...

  8. 熟悉HTML CSS布局模型

    HTML最难的地方来了!这个我反复了很多遍, 包括现在写博客, 也对我自己算是一种温习, 我这块怕是没办法写的很好懂, 因为我自己还不能把我学到的准确通俗易懂的表达出来, 给自己记个笔记, 以后再来一 ...

  9. iOS开发new与alloc/init的区别

    [className new]基本等同于[[className alloc] init]: 区别只在于alloc分配内存的时候使用了zone. 这个zone是个什么东东呢? 它是给对象分配内存的时候, ...

  10. Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    案例环境: 操作系统 :Red Hat Enterprise Linux Server release 5.7 (Tikanga) 64 bit 数据库版本 : Mysql 5.6.19 64 bit ...