今天连发4弹,超额完成任务(附中人都懂的),接下来要写点东西,C#的学习告一段落,二来好久没写东西了,先预热下,虽然要写的东西与C#没关系,学东西的过程,写点笔记还是有用的,可以帮自己梳理下,所谓听是一回事,写出来又是一回事,哈哈! 本来中级篇02,想单独写的,今天花的时间有点多了,就和高级合一起了,为了快速总结,很多东西不展开了。 中级篇: 3、集合 C#集合类,Array、ArrayList、Stack、Queue、SortList、Hashtable 前两个前面提过,不展开。 Stack 栈类,模拟栈的数据出入,先入后出; Queue 堆类,模拟堆的数据出入,先入先出; 后两个不太清楚,什么时候有人用到,再研究。 4、泛型 这个非常有用,也是用类型声明变量的一种弥补。 泛型类 ,定义 class ClassA<T>{},构造时指定T,new ClassA<int>(); 泛型方法,定义 public static string GetSum<T>(T a, T b){} 调用时指定T,如 GetSum<string>("ab", "cd") 泛型在很多地方都有用,比如委托。 高级篇 高级篇主要有: 1、字符串补充、StringBuilder类(可修改的字符串) 2、正则表达式,用于字符串的处理,基本上所有语言都支持 3、委托 这个非常重要了,也是初学者的难点,花了两周时间,基本搞明白了。 包括委托类型的定义,再用委托类型定义委托变量,如先定义一个能定义委托类型变量的委托类型(是不是非常绕,看书就是这样的,写的人明白,看的人包括写这个的人再看都不明白),如定义一个MyDelegate委托类型,用它就可以去声明一个委托变量了,如MyDelegate de,就象 用string声明一个name变量,string name。 委托变量就可以去引用一个方法了,还可以加入更多的方法,调用委托变量(即委托变量名+()),就可以按加入的顺序执行所指向的方法。 向委托变量加入方法,称注册。 委托变量可以作为方法的参数,这样定义一个方法时,用一个委托变量(可指向方法)做参数,这个方法在具体调用时,就可以传具体方法(是不是又非常绕)。 要讲清楚,要上非常多代码,不展开了。 C#内置了两个定义好的委托类型Action<T>,Func<T,T> ,前者只能引用没有返回值的方法,可以无参数,后者指向有返回值的方法,最后一个参数时返回值的类型。 多播委托,委托变量可以通过+=,指向更多的方法,执行时按加入的顺序,如果方法有返回值的话,只能拿到最后一个方法的返回值(没试过)。 匿名方法,方法的定义不需要函数名,直接赋值给委托,如 Func<int, int, int> plus02 = delegate ( int arg1, int arg2 ) { return arg1+arg2; }; Lambda表达式,这个python也有,上面的匿名方法可用lambda进行简写,不懂这个的人,看到这种代码会疯了!如上面的匿名方法 Func<int, int, int> plus = (arg1, arg2)=> { return arg1+arg2; }; 4、事件 学到这的时候,也卡了不少时间,下面总结几个关键点。 事件其实就是委托变量,也是引用方法的,声明时,不同的地方是前面加event关键字,且不能在方法中声明。 委托变量引用了方法后,可以执行,但事件引用了方法后,不能直接执行,只能在类的方法里面执行,但事件可以在方法中注册(又是一个非常绕的东西)。 有一个设计模式,observer观察者设计模式,笔记里有两个非常经典的案例,结合案例就好理解了,不展开了。 5、LINQ数据查询 类似SQL数据查询,不过是对类的字段进行,而不是对数据库,暂时只知道这个,C#对数据库怎么操作,还不清楚。 6、特性 如obsolete可以警告某个方法有新的定义,conditional可以取消方法的调用等,现在只知道有这么一个东西,没怎么用过。 7、元数据(待学习) 8、线程和进程(学习中) 9、网络编程(待学习) 还有文档操作、xml、数据结构操作等。 总结告一段落,学完全部再上传一个word笔记,会有较多的代码案例,前提是能够传! 本来学习C#的目的,是为了在unity3d中做游戏开发的,因为不知道需要了解多少C#,故计划先看完手头的C#教程,再学习unity3d,正好3D方面的东西可以用上了,几年前做过一个附中的校园3d模型,用unity3d应该可以轻松制作在校园模型内漫游了,想想都蛮有意思的,哈哈哈,byebye! |