【c#】数组使用汇总
1、二维数组初始化
public double[,] data = new double[2, 100];
Ps:
开发的时候,有试过创建长度为10000000的数组(局部变量),报错-->“如果要创建数组,请确保大小正确”
但创建为全局变量的时候不报错。
//据说在函数内部的变量都是在栈里,栈的大小根据编译器有不同,一般是1M
2、二维数组清空
Array.Clear(data, 0, data.Length); //清空索引0开始的数组内容
3、数组复制
(1)二维数组 Clone
newData = (double[,])data.Clone();
(2)一维数组 CopyTo
int[] copy = new int[array .Length];
array.CopyTo(copy, 0);
CopyTo方法用作将源数组全部拷贝到目标数组中,可以指定目标数组的起始索引,但需确保目标数组能容纳下源数组,CopyTo可用来合并多个数组。
Ps:
CopyTo()只适用于一维数组,虽然写的时候不会报错
4、获取二维数组长度
int row = Arr.GetLength(0); //行数
int col = Arr.GetLength(1); //列数
5、截取数组
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
byte[] tt = data.Skip(1).Take(data.Length).ToArray();
take的参数如果大于数组的长度,则截取到数组结束
6、数组批量赋相同值
int[] array = Enumerable.Repeat(0, 1000).ToArray();
//0是值,1000是数目,也就是数组的长度
7、数组作为构造函数传参时,报TypeInitializationExeption错误
通俗点的:https://blog.csdn.net/u012576247/article/details/39435437?utm_source=blogxgwz6
如果这个参数是静态变量的话,在执行构造函数的时候就会产生静态成员的初始化错误。
最快解决方法就是不要用静态变量作为传参。
8、数组拼接
SendByte = SendByte1.Concat(SendByte2).ToArray();
9、在数组内获取近似值
public static void GetApproximate() { List<double> dataList = new List<double>(); //两个过零点间的数值数组 double targetData = 23.22; //近似值 try { int firstIndex = dataList.Select((d, i) => { return new { Value = d, Index = i }; }).OrderBy(x => Math.Abs(x.Value - targetData)).First().Index; //获取与峰值的90%最相近相近的第一个索引 //截取数组 int lastIndex = dataList.Count() - firstIndex; dataList = dataList.GetRange(firstIndex, lastIndex - firstIndex); //从数组中获取最小值 double tempVmin = dataList.Min(); } catch (Exception ex) { } }
10、数组按绝对值从大到小排序,并取出前100个数求平均值
List<double> tmpdataList = new List<double>();var tmpData = tmpdataList.Select((value, index) => new { index, value }).OrderByDescending(n => Math.Abs(n.value)).Take(100).ToArray(); double dd = 0; for (int i = 0; i < tmpData.Count(); i++) { dd += tmpData[i].value; } dd = dd / 100; return;
直接取出绝对值最大的数:
var tmpOut = tmplist.Select((value, index) => new { index, value }).OrderByDescending(n => Math.Abs(n.value)).First();
11、获取指定元素索引
//先将数组转List
int[] allIndices = tmpList.Select((s, i) => new { Str = s, Index = i }).Where(x => x.Str.Contains("xxx")).Select(x => x.Index).ToArray();
12、删除指定元素
//先将数组转List
List<string> newList = tmpList.Where(val => val.Contains("xxx") == false).ToList();
参考:https://blog.csdn.net/zls365365/article/details/129965267
13、判断数组数据是否连续
public static bool IsSequential(int[] a) { return Enumerable.Range(1, a.Length - 1).All(i => a[i] - 1 == a[i - 1]); }
14、数组比较
bool AreArraysEqual(T[] array1, T[] array2) { return array1.SequenceEqual(array2); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!