C#数组简单知识


最近在学习C#,由于之前学习了C++,发现在C#与C++在数组的操作中有较大的不同,所以总结一下加深记忆。

数组的声明与创建

例如声明一个一维的int数组:

int []number;

声明一个二维int数组:

int [,]tnumber;

声明一个三维数组(以此类推):

int [,,] snumber;

随后创建数组:

number=new int [4];
tnumber=new int [4,6]
snumber=new int [4,5,6];

不像C++中使用int number [4] 。

可以在数组创建时使用列表初始化,如:
int []number=new int [4]{1,2,3,4};//大括号内的值也可以不是常量,可以是运行时计算的值

创建隐式类型的数组:var names=new []{“kara”,“rora”,“ciri”,“A2”};//保证都是相同的值类型

遍历数组

数组中定义了Length属性,表示数组中元素的个数。
除了使用传统的for循环来遍历数组外,还可以使用foreach来遍历数组。
实例如下:

int []pins=new int[4]{1,2,3,4};
foreach(int pin in pins)
{
	Console.WriteLine(pin);
}
有以下

注意事项:
foreach总是遍历整个数组,并且顺序固定;
最重要的是:如果要改变数组元素的值,必须使用for循环,因为foreach中用于遍历的变量是每个数组元素的只读拷贝

数组作为返回值传递

C++中不能返回一个数组,但C#中可以。
例子如下:

public int [] GetData()
{
//在这里构建好一个数组并返回
}

复制数组

数组是引用类型,如下的例子两个数组引用同一个内存

int []pins=new int [4]{1,2,3,4};
int []copy=pins;//两个数组引用同一个内存,对copy进行的操作也会在pins中体现出来

System.Array类提供了一下方法用于复制数组:
例子如下:

int []pins=new int [4]{1,2,3,4};
int []copy=new int [pins.Length];
pins.CopyTo(copy,0)//第二个参数表示复制时的起始位置

创建交错数组

为了减少不必要的空间浪费,C#中可以创建交错数组,交错数组每一列的长度可以不相等。
例子如下:

int [][]items=new int [4][];
int column0=new int [3];
int column1=new int [5];
int column2=new int [10];
int column3=new int [15];
items[0]=column0;
items[1]=column1;
items[2]=column2;
items[3]=column3;

参数数组

如果一个方法需要获取任意数量、任意类型的参数,就可以考虑使用参数数组,关键字为params
例子如下:
//输入任意数量的整数,从中找到最小值

public int Min(params int [] pins]
{
int min;
min =pins[0];
foreach(int pin in pins)
{
if (pin<min)
min=pin;
}
return pin;
}

若要接收任意类型的参数,则使用params object[]。
使用params需注意:
params只能用于一维数组。
是否有params关键字不能区分两个方法。
不能为参数数组使用ref或out关键字。
参数数组必须是方法的最后一项参数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值