C# 数组、列表、字符串
2019-10-22 本文已影响0人
李霖弢
数组 Array
数组是一个同一类型变量的集合。
Array
在创建时候即分配好了存储空间,之后无法再改变长度。
通过.Length
属性可以获得数组所有维度元素数量之和
数组声明
datatype[] arrayName;
数组赋值
使用new
创建数组实例
当数组初始化时,每个元素会根据类型隐式初始化为一个默认值。例如,int 数组的所有元素都会被初始化为 0。
double[] balance = new double[10];
balance[0] = 4500.0;
或在声明的同时进行初始化/赋值。
double[] balance = { 2340.0, 4523.69, 3421.0};
var arr = new[] { 1, 10, 100, 1000 };
使用数组初始值设定项
int[] marks = new int[5] { 99, 98, 92, 97, 95};
//此时可以省略数组的大小,比如:
int[] marks = new int[] { 99, 98, 92, 97, 95};
将一个数组赋值给另一个数组时,目标和源会指向相同的内存位置:
int[] marks = new int[] { 99, 98, 92, 97, 95};
int[] score = marks;
多维数组和交错数组
多维数组每一行都是固定的,交错数组的每一行可以有不同的大小
- 二维数组
int [,] a = new int [3,4] {
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
int val = a[2,3];//11
- 交错数组
交错数组是数组的数组。交错数组是一维数组。类似JS的嵌套数组。
int[][] scores = new int[5][];
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new int[4];
}
或直接赋值
int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};
参数数组
public int AddElements(params int[] arr)
{
int sum = 0;
foreach (int i in arr)
{
sum += i;
}
return sum;//2938
}
...
AddElements(512, 720, 250, 567, 889)
数组方法
- 判断数组中位置
Array.IndexOf( arr , item )
ArrayList
引入命名空间:using System.Collections;
在ArrayList
中长度是动态的,且可插入不同类型的数据。因为ArrayList
会把所有插入其中的数据当作为object
类型来处理,在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。
通过.Count
属性可以获得ArrayList元素数量
声明
ArrayList arrayListTest = new ArrayList();
ArrayList arrayListTest = new ArrayList(5);
var arrayListTest = new ArrayList<string> { "name", "Ana", "Felipe" };
ArrayList arrayListTest = new ArrayList(ArrayOrArrayList);
添加元素
- 在末尾添加元素 .Add() 和 .AddRange()
intArrayList.Add(50);
intArrayList.AddRange(new int[] { 2,2,2 });
- 指定位置添加 .Insert() 和 .InsertRange()
intArrayList.Insert(0,50);
intArrayList.InsertRange(0,new int[] { 2,2,2 });
删除元素 .RemoveAt() 和 .RemoveRange() .Remove()
删除后,后方元素会前移,因此需注意越界问题
intArrayList.RemoveAt(0);
intArrayList.RemoveRange(0,2);//删除第0,1个
intArrayList.Remove("hello");//删除第一个遇到的"hello"
列表 List<T>
引入命名空间:using System.Collections.Generic;
List
具有与ArrayList
相似的属性和方法,但在声明List集合时,需要为其声明List集合内数据的对象类型。
List
避免了拆装箱并保证了类型安全,因此是最推荐使用的。
List<string> list = new List<string>();
var list = new List<string> { "name", "Ana", "Felipe" };
var list = new List<int>(ArrayOrList);
查找位置 .IndexOf()
排序 .Sort() (改变原值)
字符串 String
可以通过以下方法创建字符串
- 通过给 String 变量指定一个字符串
- 通过使用 String 类构造函数
char[] letters = { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);
- 通过使用字符串串联运算符( + )
- 通过检索属性或调用一个返回字符串的方法(如
String.Join
) - 通过格式化方法来转换一个值或对象为它的字符串表示形式(如
String.Format
)