仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 718|回复: 8
打印 上一主题 下一主题

[学习教程] NET网页编程之C#中数组,ArrayList与List工具的区分

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。在C#中,当我们想要存储一组工具的时分,就会想到用数组,ArrayList,List这三个工具了。那末这三者究竟有甚么样的区分呢?

我们先来懂得一下数组,由于数组在C#中是最早呈现的。
数组


数组有良多的长处,好比说数组在内存中是一连存储的,以是它的索引速率长短常的快,并且赋值与修正元素也很复杂,好比:
string[]s=newstring[3];

//赋值
s[0]="a";
s[1]="b";
s[2]="c";

//修正
s[1]="b1";

可是,数组也存在一些不敷的中央。好比在数组的两个数据间拔出数据也是很贫苦的。另有我们在声明数组的时分,必需同时指明数组的长度,数组的长渡过长,会形成内存华侈,数组和长渡过短,会形成数据溢出的毛病。如许假如在声明数组时我们其实不分明数组的长度,就变的很辣手了。

针关于数组的这些弱点,C#中开始供应了ArrayList工具来克制这些弱点。

ArrayList


ArrayList是.NetFramework供应的用于数据存储和检索的公用类,它是定名空间System.Collections下的一部分。它的巨细是依照个中存储的数据来静态扩大与压缩的。以是,我们在声明ArrayList工具时其实不必要指定它的长度。

ArrayList承继了IList接口,以是它能够很便利的举行数据的增加,拔出和移除.好比:
ArrayListlist=newArrayList();

//新增数据
list.Add("abc");
list.Add(123);

//修正数据
list[2]=345;

//移除数据
list.RemoveAt(0);

//拔出数据
list.Insert(0,"helloworld");

从下面示例看,ArrayList仿佛是办理了数组中一切的弱点,那末它应当就是完善的了,为何在C#2.0后又会呈现List呢?

仍是从下面的示例看,在list中,我们不但拔出了字符串"abc",并且又拔出了数字123。如许在ArrayList中拔出分歧范例的数据是同意的。由于ArrayList会把一切拔出个中的数据都看成为object范例来处置。如许,在我们利用ArrayList中的数据来处置成绩的时分,极可能会报范例不婚配的毛病,也就是说ArrayList不是范例平安的。既使我们包管在拔出数据的时分都很当心,都有拔出了统一范例的数据,但在利用的时分,我们也必要将它们转化为对应的原范例来处置。这就存在了装箱与拆箱的操纵,会带来很年夜的功能消耗。

交叉一下装箱与拆箱的观点:
复杂的来说:
装箱:就是将值范例的数据打包到援用范例的实例中
好比将int范例的值123赋给object工具o
inti=123;
objecto=(object)i;

拆箱:就是从援用数据中提取值范例
好比将object工具o的值赋给int范例的变量i
objecto=123;
inti=(int)o;

装箱与拆箱的历程是很消耗功能的

泛型List


恰是由于ArrayList存在不平安范例与装箱拆箱的弱点,以是在C#2.0后呈现了泛型的观点。而List类是ArrayList类的泛型等效类。它的年夜部分用法都与ArrayList类似,由于List类也承继了IList接口。最关头的区分在于,在声明List汇合时,我们同时必要为其声明List汇合内数据的工具范例。
好比:
List<int>list=newList<int>();

//新增数据
list.Add(123);

//修正数据
list[0]=345;

//移除数据
list.RemoveAt(0);

上例中,假如我们往List汇合中拔出string字符"helloworld",IDE就会报错,且不克不及经由过程编译。如许就制止了后面讲的范例平安成绩与装箱拆箱的功能成绩了。也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。
不帅 该用户已被删除
沙发
发表于 2015-1-18 13:24:02 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
山那边是海 该用户已被删除
板凳
发表于 2015-1-26 21:23:54 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
小女巫 该用户已被删除
地板
发表于 2015-2-4 21:54:37 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
只想知道 该用户已被删除
5#
发表于 2015-2-10 21:46:00 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-1 16:05:27 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
若相依 该用户已被删除
7#
发表于 2015-3-10 20:51:26 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-17 11:03:37 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
再见西城 该用户已被删除
9#
发表于 2015-3-24 08:37:34 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 22:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表