C#入门之路03-数组


前言
以前的文章中提到过C#的数据类型,也就是int,char那些数据类型,说过数据类型就是数据的种类,那么今天要讲的第一个数据结构就是数据的组织工具,数据结构说到底就是容器,用来装数据,将数据装好使用,数据结构最重要的四个功能,增删改查,即增加数据,删除数据,改变数据,查找数据,每个语言都需要有自己的数据结构,最近同时学C++和C#,只用了几天的C++,个人感觉C++还是难,数据结构很乱,用惯了C#的数据结构用C++感觉好多功能C++都没有,如果只是做游戏,还是建议学一些封装度高的语言,但是想进大厂,还是必须学C++,废话多是我一贯的写作习惯,大家习惯就好,那么入正题,来讲C#的第一个数据结构------数组

数组定义

  • 数组是多个相同类型数据的组合,实现对这些数据的统一管理。
  • 数组是引用类型,数据是值类型还是引用类型,很重要,在学习生涯中一定要掌握。
  • 值类型和引用类型在第一篇文章中讲过,这里接着拿出来这个图片,让大家知道数组的位置,现在需要了解的是,引用类型作为函数参数的时候,函数对这个数据操作会影响这个数据的值。
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
    上图
    在这里插入图片描述

初始化方法

那么怎么声明一个数组呢

type[]var;
type是数据类型,可以是任何类型。
声明一个数组不会在内存中初始化数组。当初始化数组变量时,您可以赋值给数组。
这一句只是在栈上分配一个空间存放var,var是一个指向堆的地址。
只有new的时候才会分配数组空间
double[] balance = new double[10];
这就是声明长度为10的数组,因为装的是double,所以在堆上分配8字节乘以10等于80字节的长度(看不懂没关系,以后回来看就明白了)初始数字装0.

也可以在此时赋值
int [] marks = new int[5]  {
    
     99,  98, 92, 97, 95};

修改元素

marks[0]=12;
数组不能动态扩容,大小在声明的时候定下,所以不存在增加,删除元素,都是修改元素,这句代码就是把marks[0]改成12的意思(原来是0)
但是[]里面是数字不能越界,一个长度为n的数组,[]里是数字应该大于等于0小于等于n-1;
n可以由marks.Length得到
Length是属性
这也是我觉得C#好的地方,长度是属性,比较人性化,C++就得调用方法。

遍历元素

想要访问数组中的每一个元素的方法有两种
1
上篇文章讲的for循环
int[] TurBoQ=new int[10];
for(int i=0;i<n;i++)
{
    
    
Debug.Log(TurBoQ[i]);
}

2
C#的 foreach
这是我个人非常喜欢的C#语法,用习惯了很舒服
foreach (int i in TurBoQ)
         {
    
    
           Debug.Log(i);
         }
就像说话一样,遍历每个int类型的数据在TurBoQ中,C#舒服的地方是每个数据结构都可以使用foreach来
遍历,只需要把int改成特定的数据类型就行了。

C#多维数组

C#对应C++的二维数据有两种,一种是多维数组,一种是交错数组
多维数组是把【】改成【,】,中间加几个逗号就是几维数组,后面的{}里面第几层就是第几维

int [,] a = {
    
    {
    
    1,2,5},{
    
    3,4,0},{
    
    5,6,7}};
这就是二维数组
第一维就是装{
    
    1,2,5}这个维度
长度由a.GetLength(0)取到
第二维就是1,2,5
长度用a.GetLength(1)取到

C#交错数组

C#中交错数组是数组的数组

int [][] t = new int[3][];
t[0] = new int[2];
t[1] = new int[4];
t[2] = new int[3];
和多维数组的区别是第二维的长度不需要一定,可以是2,4,3
具体使用看自己情况
第一维的可以用t.Length取到
第二维可以用t【0】.Length取到

很重要的类Array

Array是处理数组的类,里面的很多方法我们会用到

使用的时候这样
int[] TurBoQ;
Array.Clear(TurBoQ);



1	Clear
根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。
2	Copy(Array, Array, Int32)
从数组的第一个元素开始复制某个范围的元素到另一个数组的第一个元素位置。长度由一个 32 位整数指定。
3	CopyTo(Array, Int32)
从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。
4	GetLength
获取一个 32 位整数,该值表示指定维度的数组中的元素总数。
5	GetLongLength
获取一个 64 位整数,该值表示指定维度的数组中的元素总数。
6	GetLowerBound
获取数组中指定维度的下界。
7	GetType
获取当前实例的类型。从对象(Object)继承。
8	GetUpperBound
获取数组中指定维度的上界。
9	GetValue(Int32)
获取一维数组中指定位置的值。索引由一个 32 位整数指定。
10	IndexOf(Array, Object)
搜索指定的对象,返回整个一维数组中第一次出现的索引。
11	Reverse(Array)
逆转整个一维数组中元素的顺序。
12	SetValue(Object, Int32)
给一维数组中指定位置的元素设置值。索引由一个 32 位整数指定。
13	Sort(Array)
使用数组的每个元素的 IComparable 实现来排序整个一维数组中的元素。
14	ToString
返回一个表示当前对象的字符串。从对象(Object)继承。

Over!
注:本人正在努力建设自己的公众号,大家可以关注公众号,此文章也上线我的公众号,公众号将免费提供大量教学Unity相关内容,除了从Unity入门到数据结构设计模式外,我还会免费分享我再游戏开发中使用的素材,书籍,插件,希望大家可以关注我,提前谢谢啦!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44739495/article/details/110138464
03-