本介绍性教程介绍了 C# 语言和类的基础知识。
本教程以交互方式讲解 C# ,使用浏览器编写 C# 代码,并查看编译和运行代码的结果。 它包含一系列课程,用于创建、修改和浏览集合和数组。 你主要处理该 List<T> 类(class)。
基本列表示例
小提示
当代码片段块包含“运行”按钮时,该按钮将打开交互式窗口,或替换交互式窗口中的现有代码。 当代码片段不包含“运行”按钮时,可以复制代码并将其添加到当前交互式窗口。
在交互式窗口中运行以下代码。 将 <name>
替换为你的名字,然后选择运行。
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
你创建了字符串列表,向该列表添加了三个名称,并打印了所有 CAPS 中的名称。 循环读取整个列表需要用到在前面的教程中学到的概念。
用于显示名称的代码使用 字符串内插 功能。 当在string
前加上$
字符时,可以在字符串声明中嵌入 C# 代码。 实际字符串将 C# 代码替换为它生成的值。 在此示例中,{name.ToUpper()}
被替换为各个转换为大写字母的名称,因为调用了 String.ToUpper 方法。
让我们继续探索。
修改列表内容
创建的集合使用 List<T> 类型。 此类型存储元素序列。 指定尖括号之间的元素的类型。
此 List<T> 类型的一个重要方面是它可以增长或收缩,使你能够添加或删除元素。 在显示其内容后,通过修改内容,可以查看结果。 在你已编写的代码(打印内容的循环)之后添加以下代码:
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
你向列表末尾添加了两个名称。 同时,也删除了一个名称。 此代码块的输出显示初始内容,然后输出空白行和新内容。
通过 List<T>,您还可以按 索引引用各个项。 使用 [
和 ]
令牌访问这些项。 在已编写代码后添加以下代码,然后尝试:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
不得访问超出列表末尾的项。 可以检查列表使用 Count 属性的时间。 添加以下代码:
Console.WriteLine($"The list has {names.Count} people in it");
再次选择 “运行” 以查看结果。 在 C# 中,索引从 0 开始,因此最大有效索引小于列表中的项数。
搜索列表并进行排序
我们的示例使用相对较小的列表,但应用程序通常会创建包含更多元素的列表,有时以数千个元素进行编号。 若要查找这些较大的集合中的元素,需要搜索列表以查找不同的项。 该方法 IndexOf 搜索项并返回项的索引。 如果该项不在列表中,IndexOf
返回-1
。 尝试查看其工作原理。 在到目前为止编写的代码后面添加以下代码:
var index = names.IndexOf("Felipe");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
index = names.IndexOf("Not Found");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
你可能不知道某个项是否在列表中,因此应始终检查返回的 IndexOf索引。
-1
如果是,则找不到该项。
也可以对列表中的项进行排序。 该方法 Sort 按常规顺序对列表中的所有项进行排序(按字母顺序排列)。。 添加此代码并再次运行:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
其他类型的列表
到目前为止,你一直在列表中使用 string
类型。 接下来,将让 List<T> 使用其他类型。 让我们生成一组数字。 删除到目前为止编写的代码,并将其替换为以下代码:
List<int> fibonacciNumbers = [1, 1];
这创建整数列表,并将前两个整数设置为值 1。 Fibonacci 序列,一个数字序列,以两个 1' 开头。 接下来的每一个菲博纳奇数都是通过获取前两个数字的总和找到的。 添加以下代码:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
按 “运行” 查看结果;
挑战
看看你能否从本课和早期课程中总结出一些概念。 扩展你迄今为止使用菲博纳奇数字构建的内容。 尝试编写代码以生成序列中的前 20 个数字。 (作为提示,第20个菲博纳奇数字是6765。
你想到这样的东西吗?
每次循环迭代时,你将获取列表中的最后两个整数,对它们求和,并将该值添加到列表中。 循环重复,直到向列表中添加了 20 个项目。
你已完成列表交互式教程,这是 C# 交互式教程的最终简介。 可以访问 .NET 站点来下载 .NET SDK、在计算机上创建项目以及继续编码。 “后续步骤”部分将引导您返回这些教程。 或者,可以继续 学习使用类和对象教程进行面向对象的探索编程 。
可以在以下文章中了解有关 .NET 集合 的详细信息: