C#基础之数据结构
逻辑结构:指数据元素之间的前后关系。包括集合(同属一个集合)、线性结构(一对一的相互关系)、树形结构(一对多的相互关系)、图形结构(多对多的相互关系)。
存储结构:数据在计算机存储空间中的存放形式。常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。
字符串的一些示例:
// 声明字符串变量并赋值string content = "C#语言基础";// 声明字符串变量并赋值为null,若访问则会导致异常string nullContent = null;//声明字符串变量并赋值为空字符串,长度为零string emptyContent = string.Empty;//声明字符串变量并赋值为空字符串,长度为零string emptContent = "";
属性与常用方法

// 声明一个由5个整数组成的一维数组int[] singleArray = new int[5];// 声明和设置数组元素值int[] setSingleArray = [1, 2, 3, 4, 5, 6];// 声明一个二维数组int[,] multiDimensionalArray = new int[2, 3];// 声明和设置二维数组元素值int[,] setMultiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };// 声明一个交错数组int[][] jaggedArray = new int[6][];// 设置交错数组结构中第一个数组的值。jaggedArray[0] = [1, 2, 3, 4];// 访问元素for (int i = 0; i < setSingleArray.Length; i++){ Console.WriteLine(list[i]);}
一维数组:是一系列相似元素。可以通过其索引访问元素。索引是序列中的顺序位置,数组中的第一个元素位于索引0。
多维数组:具有多个维度。对于多维数组,遍历元素的方式为:首先递增最右边维度的索引,然后是它左边的一个维度,以此类推,向最左的索引遍历元素。
交错数组:是一个数组,其元素是数组,大小可能不同。交错数组有时称为“数组的数组”。
// 声明一个集合
List<string> fruits = ["apple", "pear", "peach", "strawberry"];
// 循环访问每个元素
foreach (var fruit in fruits){
Console.Write(fruit + " ");
}// 声明一个字典集合变量
Dictionary<string, string> elements = new Dictionary<string, string>();
elements.Add("A", "90");
elements.Add("B", "80");
elements.Add("C", "70");
// 循环访问每个键值
foreach (string element in elements.Keys){
Console.WriteLine("key: " + element);
Console.WriteLine("values: " + elements[element]);
}
泛型是为所存储或使用的一个或多个类型具有占位符(类型形参)的类、结构、接口和方法。泛型集合类可以将类型形参用作其存储的对象类型的占位符;类型形参呈现为其字段的类型和其方法的参数类型。泛型方法可将其类型形参用作其返回值的类型或用作其形参之一的类型。
// 定义泛型类public class GenClass<T>{ // 定义泛型属性 public T Genname { get; set; }}public class A{ // 定义泛型方法 public T Go<T>(T arg) { T temp = arg; // 返回 return temp; }}// 调用GenClass<string> gString = new GenClass<string>();gString.Genname = "A string";GenClass<int> gInt = new GenClass<int>();gInt.Genname = 12;
术语
1、泛型类型定义是用作模板的类、结构或接口声明,带有可包含或使用的类型的占位符。
2、泛型类型参数(或类型参数)是泛型类型或方法定义中的占位符。
3、构造泛型类型(或 构造类型)是为泛型类型定义的泛型类型形参指定类型的结果。
4、泛型类型实参是被泛型类型形参所替代的任何类型。
优点
1、类型安全,泛型将类型安全的负担从你那里转移到编译器。
2、性能更好,无需对值类型进行装箱。
3、简化动态生成代码。
4、代码更少且可以更轻松地重用代码
缺点
1、不支持上下文绑定的泛型类型。
2、枚举不能具有泛型类型形参。
3、轻量动态方法不能是泛型。
***后续将对泛型详解介绍***