1.C#开发进化史
来源:互联网 发布:python 监控日志文件 编辑:程序博客网 时间:2024/06/06 18:29
1.1从简单的数据类型开始
//C#1中的Product类型using System.Collections;public class Product{ string name; public string Name { get { return name; } } decimal price; public decimal Price { get { return price; } } public Product(string name, decimal price) { this.name = name; this.price = price; } public static ArrayList GetSampleProducts() { ArrayList list = new ArrayList(); list.Add(new Product("West Side Story", 9.99m)); list.Add(new Product("Assassins", 14.99m)); list.Add(new Product("Frogs", 13.99m)); list.Add(new Product("Sweeney Todd", 10.99m)); list.Add("我添加了一个无关的字符串,编译器却那我没有办法!!!"); return list; } public override string ToString() { return string.Format("{0}:{1}", name, price); } }}
C#1代码存在如下3个缺陷:
1.ArrayList没有提供与其内部内容有关的编译时信息。不慎在GetSampleProducts创建的列表中添加一个字符串是完全可能的,而编译器对于此没有任何反应。
2.代码中为属性提供了公共的取值方法,这意味着如果添加对应的赋值方法,那么赋值方法也必须是公共的。
3.用于创建属性和变量的代码很复杂——封装一个字符串和一个十进制数应该是一个十分简单的任务,不该这么复杂。
//C#2中强类型集合和私有的赋值方法using System.Collections.Generic;public class Product{ string name; public string Name { get { return name; } private set { name = value; } } decimal price; public decimal Price { get { return price; } private set { price = value; } } public Product(string name, decimal price) { Name = name; Price = price; } public static ListGetSampleProducts() { List list = new List (); list.Add(new Product("West Side Story", 9.99m)); list.Add(new Product("Assassins", 14.99m)); list.Add(new Product("Frogs", 13.99m)); list.Add(new Product("Sweeney Todd", 10.99m)); return list; } public override string ToString() { return string.Format("{0}:{1}", name, price); }}
C#2中解决了上面3个缺陷中的前2个。
C#2中最重要的改变:泛型。
现在,属性拥有了私有的 赋值方法(只能类内使用,这里在构造函数中使用了这两个赋值方法)。并且它能非常聪明地猜出List<Product>是告知编译器列表中只能包含Product类型的值。试图将一个不同的类型添加到列表中,编译器就会报错,并且当你从列表中获取结果时,也不需要转换结果的类型,因为取出来的一定是Product类型的值。
0 0
- 1.C#开发进化史
- C#进化史
- C#开发的进化史(从简单的数据类型开始)
- 第一章 C#开发进化史:1.2排序和过滤
- 第一章 C#开发进化史:1.3处理未知数据
- C#进化史-属性
- 第一章 C#开发的进化史:1.1从简单的数据类型开始
- 【第一章】C#的进化史——C#1.0,2.0,3.0区别比较(一)
- 浏览器进化史
- 数字视频进化史
- Windows进化史
- OpenGL 进化史
- js进化史
- 菜鸟进化史
- Elasticsearch进化史
- 菜鸟进化史
- Android进化史
- Lamda进化史
- PHP检测字符串是否为UTF8编码的常用方法
- Python中“xx+=xx”与“xx=xx+xx”的区别
- python进阶学习笔记(大纲)——摘自慕课网 python进阶
- 25匹马,5个跑道,最少需要比赛多少场就能决出前三名
- dwr注解基础+何为dwr
- 1.C#开发进化史
- 【Linux】Centos6.8安装MongoDB
- hibernate中日期问题+日期查询
- 【正则表达式图片总结】+常用的表单验证代码
- 快速排序
- Hibernate3的动态条件查询DetachedCriteria
- 给你一个App,你将如何测试?
- 使用报表开发工具Ireport生成Pdf报表的总结
- 最小生成树Prim算法 Highways POJ