站长网 语言 一篇学会 C# 集合类型

一篇学会 C# 集合类型

对于许多应用程序,你会想要创建和管理相关对象的组。有两种方法对对象进行分组:通过创建对象的数组,以及通过创建对象的集合。 数组最适用于创建和使用固定数量的强类型化对象。 集合提供更灵活的方式来使用对象组。与数组不同,你使用的对象组随着应用程

对于许多应用程序,你会想要创建和管理相关对象的组。有两种方法对对象进行分组:通过创建对象的数组,以及通过创建对象的集合。
 
数组最适用于创建和使用固定数量的强类型化对象。
 
集合提供更灵活的方式来使用对象组。与数组不同,你使用的对象组随着应用程序更改的需要动态地放大和缩小。对于某些集合,你可以为放入集合中的任何对象分配一个密钥,这样你便可以使用该密钥快速检索此对象。
 
集合是一个类,因此必须在向该集合添加元素之前,声明类的实例。
 
如果集合中只包含一种数据类型的元素,则可以使用 System.Collections.Generic 命名空间中的一个类。泛型集合强制类型安全,因此无法向其添加任何其他数据类型。当你从泛型集合检索元素时,你无需确定其数据类型或对其进行转换。
 
创建字符串列表,并通过使用 foreach 语句循环访问字符串。
 
// Create a list of strings.
var salmons = new List<string>();
salmons.Add("chinook");
salmons.Add("coho");
salmons.Add("pink");
salmons.Add("sockeye");
 
// Iterate through the list.
foreach (var salmon in salmons)
{
    Console.Write(salmon + " ");
}
// Output: chinook coho pink sockeye
如果集合中的内容是事先已知的,则可以使用集合初始值设定项来初始化集合。
 
// Create a list of strings by using a
// collection initializer.
var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };
 
// Iterate through the list.
foreach (var salmon in salmons)
{
    Console.Write(salmon + " ");
}
// Output: chinook coho pink sockeye
可以使用 for 语句,而不是 foreach 语句来循环访问集合。通过按索引位置访问集合元素实现此目的。元素的索引开始于 0,结束于元素计数减 1。
 
以下示例通过使用 for 而不是 foreach 循环访问集合中的元素。
 
// Create a list of strings by using a
// collection initializer.
var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };
 
for (var index = 0; index < salmons.Count; index++)
{
    Console.Write(salmons[index] + " ");
}
// Output: chinook coho pink sockeye
对于 List中的元素类型,还可以定义自己的类。在下面的示例中,由 List使用的 Galaxy 类在代码中定义。
 
private static void IterateThroughList()
{
    var theGalaxies = new List<Galaxy>
        {
            new Galaxy() { Name="Tadpole", MegaLightYears=400},
            new Galaxy() { Name="Pinwheel", MegaLightYears=25},
            new Galaxy() { Name="Milky Way", MegaLightYears=0},
            new Galaxy() { Name="Andromeda", MegaLightYears=3}
        };
 
    foreach (Galaxy theGalaxy in theGalaxies)
    {
        Console.WriteLine(theGalaxy.Name + "  " + theGalaxy.MegaLightYears);
    }
 
    // Output:
    //  Tadpole  400
    //  Pinwheel  25
    //  Milky Way  0
    //  Andromeda  3
}
 
public class Galaxy
{
    public string Name { get; set; }
    public int MegaLightYears { get; set; }

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/biancheng/yuyan/2021/1211/36377.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部