代码笔记
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace c_generic { class Program { static void Main(string[] args) { // 泛型 generic 也叫数据集合,创建的集合使用 List<T> 类型 // List<T> 数据类型存储一系列元素。 元素类型是在尖括号内指定 // 创建了一个字符串列表,在该列表中添加了三个名称,并打印了所有大写的名称。 // 注意是使用var和new标识符来定义 数据集合 var names = new List<string> { "你大爷的", "Ana", "Felipe" }; // 注意这里的循环结构 foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); } // List<T> 类型的一个重要方面是,既可以扩大,也可以收缩,方便用户添加或删除元素 Console.WriteLine(); names.Add("Maria"); names.Add("Bill"); names.Remove("Ana"); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); } // 还可以按索引引用各项。 使用 [ 和 ] 令牌访问这些项 Console.WriteLine($"My name is {names[0]}."); Console.WriteLine($"我添加了两个名称分别是 {names[2]} and {names[3]} to the list."); // 不得访问超出列表末尾的项。 可以使用 Count 属性确定列表长度 Console.WriteLine($"当前列表有 {names.Count} 个数据在集合中"); // 搜索列表并进行排序 // 数据集合中有时可能会包含数以千计的元素。 若要在更大的集合中查找元素,需要在列表中搜索不同的项。 // IndexOf 方法可搜索项,并返回此项的索引。 如果项不在列表中,IndexOf 将返回 -1 // 可能无法确定列表是否包含某项,因此,应始终检查 IndexOf 返回的索引。 // 如果索引为 -1,则找不到相应项。 var index = names.IndexOf("Felipe"); if (index != -1) { Console.Write($"字符串 {names[index]} 在此数据集合中的索引值是 {index} 。"); Console.WriteLine(" 因为第一个索引值是0,第二个初始数据已经被Remove方法删除"); } var notFound = names.IndexOf("你大爷"); Console.WriteLine($"当数据没有找到时, IndexOf 方法的返回值是 {notFound}"); // 对列表中的项进行排序。 Sort 方法按正常顺序(如果是字符串则按字母顺序)对列表中的所有项进行排序 // 注意字符串排序中,汉字会被排序到后面 names.Sort(); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); } Console.WriteLine(" "); Console.WriteLine(" "); // 关于数据集合 (列表中的项)(泛型) ,咱们放入数字再试试看 // 试研究下斐波那契数列 Console.WriteLine("斐波那契数列中的每个数字都是前两个数字之和"); var fibonacciNumbers = new List<int> { 1, 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); } // 试着生成斐波那契数列中 的前 n 个数 Console.WriteLine("试着生成斐波那契数列中 的前 n 个数"); int n = 20; var Nums = new List<int> { 1, 1 }; var n1 = Nums[Nums.Count - 2]; var n2 = Nums[Nums.Count - 1]; Console.Write($" {n1} "); Console.Write($" {n2} "); for (int i = 3; i <= n; i++) { int currentN = Nums[Nums.Count - 2] + Nums[Nums.Count - 1]; Nums.Add(currentN); Console.Write($" {currentN} "); } // 深入参考,见后面 Console.ReadLine(); } } }
数据集合-泛型-列表中的项深入参考
选择数据集合类型
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/selecting-a-collection-class
常用的数据集合类型
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/commonly-used-collection-types
何时使用泛型集合
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/when-to-use-generic-collections