.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. #9.1课堂总结#JS基础(二)

    在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...

  2. $.extend()的深拷贝和浅拷贝详细讲解

    版权声明:作者原创,转载请注明出处! 语法:jQuery.extend( [deep ], target, object1 [, objectN ] ) 描述: 将两个或更多对象的内容合并到第一个对象 ...

  3. GIS公交查询-flex/java

    开发语言是flex.java,开发平台是myeclise.eclise,开发接口是arcgis api for flex,提供以下的功能: 1.站名-站名查询: 2.站点查询: 3.路线查询: 备注: ...

  4. iOS UISearchController的使用

    在iOS9中,UISearchDisplayController 已经被UISearchController替代.搜索框是一种常用的控件. 假设我们要满足下图的需求,产生100个“数字+三个随机字母” ...

  5. sharepoint powershell 批量处理匿名访问

    配置Web Application启用匿名访问 Add-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyCont ...

  6. Synchronization Service Manager

    You can use this UI Shell to check the User Profile log for the SharePoint.   It's stored in this pa ...

  7. FIJ Jobs - 150316

    Department Vacancies Total Skill Set Experience Language Oracle; OBIEE 3years English Systems Sr. So ...

  8. 获取本机IP地址

    这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...

  9. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...

  10. Linux LVM学习总结——创建卷组VG

    在Linux平台如何创建一个卷组(VG)呢?下面简单介绍一下卷组(VG)的创建步骤.本文实验平台为Red Hat Enterprise Linux Server release 6.6 (Santia ...