sách gpt4 ăn đã đi

Giải thích chi tiết và ví dụ về sự khác biệt giữa mảng, ArrayList và List trong C#

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 24 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này cung cấp những giải thích chi tiết và ví dụ về sự khác biệt giữa mảng, ArrayList và List trong C#, được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Trong C#, mảng, ArrayList và List đều có thể lưu trữ một tập hợp đối tượng, vậy sự khác biệt giữa ba đối tượng này là gì.

mảng.

Mảng xuất hiện lần đầu tiên trong C#. Nó được lưu trữ liên tục trong bộ nhớ nên tốc độ lập chỉ mục rất nhanh, việc gán và sửa đổi các phần tử cũng rất đơn giản.

?
1
2
3
4
5
6
7
8
9
//数组
sợi dây [] s= mới sợi dây [2];
 
//phân công
s[0]= "Một" ;
s[1]= "b" ;
//Ôn lại
s[1]= "a1" ;

Nhưng mảng có một số thiếu sót. Việc chèn dữ liệu giữa hai dữ liệu trong một mảng rất rắc rối và phải xác định rõ độ dài của mảng khi khai báo mảng. Nếu độ dài của mảng quá dài sẽ gây lãng phí bộ nhớ và việc phân đoạn quá mức sẽ gây ra. lỗi tràn dữ liệu. Điều này có thể trở nên rắc rối nếu chúng ta không biết độ dài của mảng khi khai báo nó.

Để khắc phục những thiếu sót này của mảng, trước tiên C# đã cung cấp đối tượng ArrayList để khắc phục những thiếu sót này.

Mảng List 。

ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明ArrayList对象时并不需要指定它的长度.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//ArrayList
ArrayList list1 = mới ArrayList();
 
//新增数据
list1.Add( "cde" );
list1.Add(5678);
 
//修改数据
list[2] = 34;
 
//移除数据
list.RemoveAt(0);
 
//插入数据
list.Insert(0, "qwe" );

从上面例子看,ArrayList好像是解决了数组中所有的缺点,为什么又会有List?

我们从上面的例子看,在List中,我们不仅插入了字符串cde,而且插入了数字5678。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损.

装箱与拆箱的概念:

简单的说

装箱:就是将值类型的数据打包到引用类型的实例中 。

比如将string类型的值abc赋给object对象obj 。

?
1
2
String i= "abc" ;
sự vật obj=( sự vật )i;

拆箱:就是从引用数据中提取值类型 。

比如将object对象obj的值赋给string类型的变量i 。

?
1
2
sự vật obj= "abc" ;
sợi dây i=( sợi dây )obj;

装箱与拆箱的过程是很损耗性能的.

泛型List 。

因为ArrayList存在不安全类型与装箱拆箱的缺点,所以出现了泛型的概念。List类是ArrayList类的泛型等效类,它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。 比如:

?
1
2
3
4
5
6
7
8
9
10
Danh sách< sợi dây > sợi dây > danh sách = mới Danh sách< sợi dây > sợi dây >();
 
//新增数据
list.Add( "abc" );
 
//修改数据
list[0] = "def" ;
 
//移除数据
list.RemoveAt(0);

上例中,如果我们往List集合中插入int数组123,IDE就会报错,且不能通过编译。这样就避免了前面讲的类型安全问题与装箱拆箱的性能问题了.

Tóm tắt:

数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List的容量可根据需要自动扩充、修改、删除或插入数据.

数组可以具有多个维度,而 ArrayList或 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近.

在决定使用 List 还是使用ArrayList 类(两者具有类似的功能)时,记住List 类在大多数情况下执行得更好并且是类型安全的。如果对List< T> 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题.

Cảm ơn bạn đã đọc, tôi hy vọng điều này sẽ giúp ích cho mọi người và cảm ơn bạn đã ủng hộ trang web này! .

原文链接:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 。

最后此篇关于C#中数组、ArrayList和List三者的区别详解及实例的文章就讲到这里了,如果你想了解更多关于C#中数组、ArrayList和List三者的区别详解及实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress