一篇学会 C# 集合类型

开发 后端
对于许多应用程序,你会想要创建和管理相关对象的组。有两种方法对对象进行分组:通过创建对象的数组,以及通过创建对象的集合。

[[439433]]

 对于许多应用程序,你会想要创建和管理相关对象的组。有两种方法对对象进行分组:通过创建对象的数组,以及通过创建对象的集合。

数组最适用于创建和使用固定数量的强类型化对象。

集合提供更灵活的方式来使用对象组。与数组不同,你使用的对象组随着应用程序更改的需要动态地放大和缩小。对于某些集合,你可以为放入集合中的任何对象分配一个密钥,这样你便可以使用该密钥快速检索此对象。

集合是一个类,因此必须在向该集合添加元素之前,声明类的实例。

如果集合中只包含一种数据类型的元素,则可以使用 System.Collections.Generic 命名空间中的一个类。泛型集合强制类型安全,因此无法向其添加任何其他数据类型。当你从泛型集合检索元素时,你无需确定其数据类型或对其进行转换。

创建字符串列表,并通过使用 foreach 语句循环访问字符串。

  1. // Create a list of strings. 
  2. var salmons = new List<string>(); 
  3. salmons.Add("chinook"); 
  4. salmons.Add("coho"); 
  5. salmons.Add("pink"); 
  6. salmons.Add("sockeye"); 
  7.  
  8. // Iterate through the list. 
  9. foreach (var salmon in salmons) 
  10.     Console.Write(salmon + " "); 
  11. // Output: chinook coho pink sockeye 

如果集合中的内容是事先已知的,则可以使用集合初始值设定项来初始化集合。

  1. // Create a list of strings by using a 
  2. // collection initializer. 
  3. var salmons = new List<string> { "chinook""coho""pink""sockeye" }; 
  4.  
  5. // Iterate through the list. 
  6. foreach (var salmon in salmons) 
  7.     Console.Write(salmon + " "); 
  8. // Output: chinook coho pink sockeye 

可以使用 for 语句,而不是 foreach 语句来循环访问集合。通过按索引位置访问集合元素实现此目的。元素的索引开始于 0,结束于元素计数减 1。

以下示例通过使用 for 而不是 foreach 循环访问集合中的元素。

  1. // Create a list of strings by using a 
  2. // collection initializer. 
  3. var salmons = new List<string> { "chinook""coho""pink""sockeye" }; 
  4.  
  5. for (var index = 0; index < salmons.Countindex++) 
  6.     Console.Write(salmons[index] + " "); 
  7. // Output: chinook coho pink sockeye 

对于 List中的元素类型,还可以定义自己的类。在下面的示例中,由 List使用的 Galaxy 类在代码中定义。

  1. private static void IterateThroughList() 
  2.     var theGalaxies = new List<Galaxy> 
  3.         { 
  4.             new Galaxy() { Name="Tadpole", MegaLightYears=400}, 
  5.             new Galaxy() { Name="Pinwheel", MegaLightYears=25}, 
  6.             new Galaxy() { Name="Milky Way", MegaLightYears=0}, 
  7.             new Galaxy() { Name="Andromeda", MegaLightYears=3} 
  8.         }; 
  9.  
  10.     foreach (Galaxy theGalaxy in theGalaxies) 
  11.     { 
  12.         Console.WriteLine(theGalaxy.Name + "  " + theGalaxy.MegaLightYears); 
  13.     } 
  14.  
  15.     // Output
  16.     //  Tadpole  400 
  17.     //  Pinwheel  25 
  18.     //  Milky Way  0 
  19.     //  Andromeda  3 
  20.  
  21. public class Galaxy 
  22.     public string Name { get; set; } 
  23.     public int MegaLightYears { get; set; } 

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2021-11-09 12:11:55

C# Redis队列

2021-11-15 10:29:39

Go语言类型

2022-04-26 09:01:39

实用工具类型TypeScript

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-07-06 08:59:18

抽象工厂模式

2021-05-11 08:54:59

建造者模式设计

2021-07-05 22:11:38

MySQL体系架构

2023-01-03 08:31:54

Spring读取器配置

2023-11-28 08:29:31

Rust内存布局

2021-07-02 09:45:29

MySQL InnoDB数据

2022-08-26 09:29:01

Kubernetes策略Master

2022-08-23 08:00:59

磁盘性能网络

2021-07-02 08:51:29

源码参数Thread

2021-10-27 09:59:35

存储

2022-04-12 08:30:52

回调函数代码调试

2021-07-16 22:43:10

Go并发Golang

2023-03-13 21:38:08

TCP数据IP地址

2023-11-01 09:07:01

Spring装配源码

2022-10-20 07:39:26

点赞
收藏

51CTO技术栈公众号