(九)CSharp-数组

news/2024/4/15 12:32:45

一、矩形数组

1、访问数组元素

  class Program{static void Main(string[] args){int[] intArr1 = new int[15];intArr1[2] = 10;int var1 = intArr1[2];int[,] intArr2 = new int[5, 10];intArr2[2, 3] = 7;int var2 = intArr2[2, 3];int[] myIntArray = new int[4];for (int i = 0; i < 4; i++)myIntArray[i] = i * 10;for (int i = 0; i < 4; i++)Console.WriteLine($"Value of element{ i } = { myIntArray[i] }");Console.ReadKey();}}

2、初始化

1)显式初始化一维数组

int[] intArr = new int[]{ 10,20,30,40 };

2)显式初始化矩形数组

int[,] intArray2 = new int[,]{ { 10,1},{ 2,10 },{ 11,9 } };

3)初始化矩形数组的语法点

int[,,] intArray = new int[4,3,2]{
{ { 8,6 },{ 8,6 },{ 8,6 } },
{ { 8,6 },{ 8,6 },{ 8,6 } },
{ { 8,6 },{ 8,6 },{ 8,6 } },
{ { 8,6 },{ 8,6 },{ 8,6 } },
};

4)快捷语法

//arr1 和 arr2 等价
int[] arr1 = new int[3]{ 10,20,30 };
int[] arr2 = { 10,20,30 };//arr3 和 arr4 等价
int[,] arr3 = new int[2,3]{ { 0,1,2 }, { 0,1,2 } };
int[,] arr4 = { { 0,1,2 }, { 0,1,2 } };

3、隐式类型数组

int[] intArr1 = new int[] { 10,20,30,40 };int[]:显式
var intArr2 = new [] { 10,20,30,40 };//隐式定义int[,] intArr3 = new int[,] { { 10,1 },{ 10,1 },{ 10,1 } } ;
var intArr2 = new    [,] { { 10,1 },{ 10,1 },{ 10,1 } } ;atring[] sArr1 = new string[] { "life", "liberty","pureuit of happiness" };
var      sArr2 = new       [] { "life","liberty" ,"pureuit of happiness"}
//

二、交错数组

交错数组是数组的数组。交错数组的子数组的元素个数可以不同。

int[][] jagArr = new int[3][];//比如:
//jagArr[0][x]:子数组有x个元素
//agArr[1][y]:子数组有y个元素
//agArr[2][x]:子数组有z个元素

1、声明交错数组

int [][] SomeArr;//秩等于3
int [][][] OtherArr; //秩等于3

2、快捷实例化

声明:

int[][] jagArr = new int[3][];

不能在声明语句中初始化顶层数组之外的数组。

int[][] jagArr = new int[3][4];//编译错误//声明初始化时,如果把[3][]设置为[3][4],则设置子数组为4是不被允许的。

3、实例化交错数组

class Program{static void Main(string[] args){int[][,] Arr;Arr = new int[3][,];Arr[0] = new int[,] {   { 1, 2 }, { 10, 20 }   };Arr[1] = new int[,] {   { 1, 2 ,3}, { 10, 20,30 }   };Arr[2] = new int[,] {   { 1, 2,3,4 }, { 10, 20,30,40 }, { 100, 200, 300, 400 }   };//Arr.GetLength(0):获取 Arr 维度0的长度(维度是数组的层级)//Arr.GetLength(0) 是 int[3][x,y] 中的 3for (int i = 0; i < Arr.GetLength(0); i++){//Arr[i].GetLength(0):获取 Arr[i] 维度0的长度//Arr[i].GetLength(0) 是 int[3][x,y] 中的 xfor (int j = 0; j < Arr[i].GetLength(0); j++){//Arr[i].GetLength(1):获取 Arr[i] 维度1的长度//Arr[i].GetLength(1) 是 int[3][x,y] 中的 yfor (int k = 0; k < Arr[i].GetLength(1); k++){Console.WriteLine($"[{i}][{j},{k}] = { Arr[i][j,k] }");}Console.WriteLine("");}Console.WriteLine("");}Console.ReadKey();}}

输出结果:

[0][0,0] = 1
[0][0,1] = 2[0][1,0] = 10
[0][1,1] = 20[1][0,0] = 1
[1][0,1] = 2
[1][0,2] = 3[1][1,0] = 10
[1][1,1] = 20
[1][1,2] = 30[2][0,0] = 1
[2][0,1] = 2
[2][0,2] = 3
[2][0,3] = 4[2][1,0] = 10
[2][1,1] = 20
[2][1,2] = 30
[2][1,3] = 40[2][2,0] = 100
[2][2,1] = 200
[2][2,2] = 300
[2][2,3] = 400

4、比较矩形数组和交错数组

请添加图片描述

在 CIL中(中间语言),存在对一维数组进行性能优化的指令,而矩形数组没有这些指令。

四、foreach

1、迭代变量

由于迭代变量的值是只读的,所以它不能改变。

foreach(int item in arr1)
//item 是迭代变量

对值类型数组:

int arr1 = { 10,11,12,13 };foreach(int item in arr1)
{
item++;//编译错误,不能改变 item 值
}

对引用类型数组:

MyClass[] mcArray = new MyClass[4];foreach(int item in arr1)
{
item.MyField;//可以改变引用类型对象里的成员
item = null;//编译错误,不能改变 item 值。
}

2、foreach 语句和多维数组

示例

   class Program{static void Main(string[] args){//矩形数组的示例int[,] arr1 = { { 10, 11 }, { 12, 13 } };foreach (var element in arr1){//....}//交错数组的示例int[][] arr2 = new int[2][];arr2[0] = new int[] { 10, 11 };arr2[1] = new int[] { 12, 13, 14 };foreach (int[] array in arr2){foreach (int item in array){//....}}Console.ReadKey();}}

五、数组协变

在某些情况下,即使某个对象不是数组的基类型,也可以把它赋值给数组元素。这种属性叫作数组协变。

可进行数组协变的条件:

  • 数组是引用类型数组。
  • 在赋值的对象类型和数组基类型之间有隐式转换或显式转换。
class A { }class B : A { }class Program{static void Main(string[] args){A[] AArray1 = new A[3];A[] AArray2 = new A[3];AArray2[0] = new B();//产生协变AArray2[1] = new B();//产生协变AArray2[2] = new B();//产生协变Console.ReadKey();}}

请添加图片描述

六、数组继承的有用成员

1、数组基类继承的属性和方法

C# 数组派生自 System.Array 类。它们可以从基类继承很多有用的属性和方法。

表-数组继承的一些有用成员

成员类 型生存期意义
Rank属性实例获取数组的维度数
Length属性实例获取数组中所有维度的元素总数目
Getlength方法实例返回数组的指定维度的长度
Clear方法静态将某一范围内的元素设置为 0 或null
Sort方法静态在一维数组中对元素进行排序
BinarySearch方法静态使用二进制搜索,搜索一维数组中的值
Clone方法实例进行数组的浅复制——对于值类型数组和引用类型数组,都只复制元素
IndexOf方法静态返回一维数组中遇到的第一个值
Reverse方法静态反转一维数组中某一范围内的元素
GetUpperBound方法实例获取指定维度的上限

使用其中一些属性和方法的例子:

   class Program{public static void PrintArray(int[] a){foreach (var x in a)Console.Write($"{ x }  ");Console.WriteLine("");}static void Main(string[] args){int[] arr = new int[] { 15, 20, 5, 25, 10 };PrintArray(arr);Array.Sort(arr);PrintArray(arr);Array.Reverse(arr);PrintArray(arr);Console.WriteLine();Console.WriteLine($"Rank = { arr.Rank },Length = { arr.Length }");Console.WriteLine($"GetLength()     = { arr.GetLength(0) }");Console.WriteLine($"GetType()       = { arr.GetType() }");Console.ReadKey();}}

输出结果:

15 20 5 25 10
5 10 15 20 25
25 20 15 10 5
.
Rank = 1,Length = 5
GetLength() = 5
GetType() = System.Int32[]

2、Clone() 方法

Clone 方法为数组进行浅复制,它只创建了数组本身的克隆。

  • 克隆值类型数组会产生两个独立数组。
  • 克隆引用类型数组会产生指向相同对象的两个数组。
int[] intArr1 = { 1,2,3 };
int[] intArr2 = (int[]) intArr1.Clone();
//int[]:数组类型
//Clone():返回 object

3、比较数组类型

表总结了3种类型的数组的重要相似点和不同点——比较数组类型的总结。

数组类型数组对象语法语法形状
一维: ◾ 在CIL 中有优化指令1单组🚫请添加图片描述
矩形:◾ 多维度◾ 多维数组中的子数组必须长度相同1单组请添加图片描述
交错:◾ 多维度◾ 子数组的长度可以不同多个多组🚫请添加图片描述

http://www.ppmy.cn/news/387637.html

相关文章

服务器租用费用受哪些因素的影响

1、服务器带宽 服务器需要接入带宽才能供大家访问&#xff0c;因此&#xff0c;带宽的选择会直接影响到租用费用的高低。一般原则是带宽量越高&#xff0c;带宽费用部分也就越贵。 除开带宽量意外&#xff0c;带宽线路的选择也是会直接影响到带宽租用费用。机房会有电信单线带…

服务器租用机房的类型有哪些

服务器租用机房的类型有哪些 1、单电信机房 单电信服务器机房业务模式比较固定&#xff0c;访问量也不是很大&#xff0c;适合新闻类网站或政务类网站。如果网站的PV流量持续增加&#xff0c;建议后期采用租赁CDN的方式解决非电信用户访问网站速度过慢的问题 2、双线机房 双线机…

服务器租用托管如何选择合适的线路和带宽

服务器租用托管带宽如何选择线路 无需你是服务器托管或是租用服务器都要想网络服务器功能平稳&#xff0c;网站打开速度要快。今日我们详细介绍下网络服务器网站打开速度即将如何选择网络带宽。 大家都了解网络服务器特性就是你在选购服务器的配置的硬件配置所确定的&#xff0…

国内服务器租用与海外服务器租用存在哪些区别

随着服务器使用的频率增高&#xff0c;服务器租用成为节约成本的一种方式&#xff0c;而服务器租用分为国内服务器租用与海外服务器租用。下面&#xff0c;小编就详细为大家介绍关于这两者之间的区别&#xff0c;可以帮助大家更好的选择适合自己的服务器。 1.面对用户群体不同 …

恒讯科技分析:国内游戏服务器租用市场的大致情况怎么样呢?

我司在服务器租用业务运营几年期间&#xff0c;接触了大量的各类客户&#xff0c;其中较为重要的一批客户就是租用服务器用做网络游戏&#xff0c;游戏网站&#xff0c;以及用做私服类的客户。这类客户通常需要多台服务器&#xff0c;也是服务器租用客户中不可或缺的重要力量。…

租用服务器如何选择合适的配置

经常有人问&#xff0c;怎么去选择自己的配置很好&#xff0c;今天天气不错&#xff0c;我们一起来聊一下这个话题。 选择合适的路线。 选定合适的线路IP。线路主要分单线、双线、多线BGP.单线一般默认电信线路&#xff0c;国内电信线路是比较成熟的&#xff0c;无论是带宽和…

联通客户端访问电信服务器访问不了的解决方案

联通客户端访问电信服务器访问不了的解决方案&#xff1a; 访问FTP服务器有两种方式&#xff1a;port和passive&#xff0c;跨网络运营商访问FTP要使用&#xff1a;passive模式 设置ftp.UsePassive true即可解决&#xff0c;我曾租用了阿里云的服务器ECS&#xff0c;是电信IP&…

电商视频服务器租用,如何选择配置?

电商视频服务器租用&#xff0c;如何选择配置&#xff1f;视频网站和一般的网站区别还是很大的&#xff0c;一般的网站基本都是图文内容&#xff0c;而视频网站是以视频为输出内容&#xff0c;内容更多、存储更大&#xff0c;还需要考虑到用户的观看体验&#xff0c;相比较一般…

电信大型服务器机房_香港十大知名服务器机房汇总详细介绍

在这个网络不断发展的大环境下&#xff0c;我们将计算机机房、通讯机房、互联网数据中心IDC(Internet Data Center)机房、屏蔽机房等 统称为电子设备机房&#xff0c;简称机房&#xff0c;香港服务器机房在技术方面经过多年的不断改进&#xff0c;走出了一批批优质的机房。 机房…

租用哪一家服务器好呢?

选择服务器&#xff0c;一般需要确定服务器是做什么用的&#xff0c;做什么业务。用轻量应用服务器建个人网站博客就够了&#xff0c;便宜又实惠。视频网站和资源下载使用大带宽云服务器&#xff0c;游戏使用高防御服务器。这是基本的第一想法。 在具体的选择中&#xff0c;我…

CSGO服务器租用如何选择合适的配置?CSGO服务器怎么选择?

CSGO服务器租用如何选择合适的配置&#xff1f;CSGO服务器怎么选择&#xff1f; CSGO对于喜欢玩枪战类游戏的并不陌生&#xff0c;以1999年的CS为原型开发的新作&#xff0c;在团队竞技游戏模式的基础上加以开发&#xff0c;Counter-Strike&#xff1a;Global Offensive包含全…

服务器租用接入BGP线路的优势有哪些

服务器租用接入BGP线路的优势有哪些 服务器租赁主机托管广州市主机托管中国香港服务器租赁服务器机柜大网络带宽器租赁Https证书云服务器 1.产品介绍 在广州市、深圳市、中山市、北京市、浙江省、江苏省等地的大数据中心及云节点均连接了BGP路线&#xff0c;与电信网、中国联通…

APP服务器租用选择优势介绍!

aPP&#xff1a; 目前APP服务器租用大致可以分为两种&#xff0c;一种是传统物理服务器&#xff0c;另一种是目前最流行使用最多的云服务器。从价格上来看物理服务器要比云服务器少贵一些。 租用手机APP服务器&#xff0c;服务器速度&#xff0c;线路最重要&#xff1b;建议大家…

[入门指南]香港服务器租用配置怎么选?

服务器离用户位置越近&#xff0c;用户的连接和数据传输速度越快。香港服务器则极适合用户群体位于中国内地、东南亚及周边亚太地区的外贸业务。对新手来说&#xff0c;选择香港服务器的配置规格可能一头雾水。你需要什么CPU&#xff1f;多少内存&#xff1f;1TB 的存储空间是否…

服务器租用idc机房功能和配置介绍

近期有许多顾客寻找我掌握IDC业务&#xff0c;她们都表明专业能力的物品不了解&#xff0c;技术专业的专有名词也听不明白&#xff0c;没事儿&#xff0c;今日的我来给大伙儿解释IDC的有关专业知识。 一、什么叫IDC&#xff1f; IDC的全名是Internet Data Center&#xff0c;翻…

棋牌服务器的租用选择

高防服务器主要是为企业和个人站长客户&#xff0c;这些客户对网络安全要求性高&#xff0c;高防服务器为 客户提供更安全的网络环境&#xff0c;为企业、个人站长提供安全保障&#xff0c;客户在选择高防服务器之 前&#xff0c;要了解清楚一些注意事项。 1.高防服务器安全的…

服务器托管和服务器租用的区别

服务器托管和服务器租用的区别 目前对于服务器要求相对高的企业会希望使用独立服务器来运行自己的网站&#xff0c;而在选择独立服务器业务事&#xff0c;是使用服务器托管还是服务器租用这两种方法时&#xff0c;如何选择就成为许多人需要考虑的问题&#xff0c;那服务器托管…

【高防服务器租用】这里有一份服务器租用攻略,请收好!

随着网络的普及&#xff0c;不论是企业还是个人用户都开始去租用服务器在线上推广自己的产品或企业了。但是很多用户在网站建设后选购服务器的时候却犯了难&#xff0c;由于对服务器性能与特性不是很了解&#xff0c;导致很多人租用服务器后发现并不适合自己使用。鉴于这种情况…

服务器租用哪家靠谱?

当前有很多人问道&#xff1a;服务器租用哪家靠谱&#xff1f;如何选择一家靠谱的IDC服务商&#xff1f;提醒大家关注好如下几点&#xff0c;若符合要求&#xff0c;基本可以合作了。所以服务器租用需要找大型IDC公司才有保障。更多咨询&#xff1a;QQ664595560 1.资质背景 &a…

电信大型服务器机房_四川绵阳科技城电信IDC机房服务器租用_绵阳服务器托管哪家好?...

安全系统 所有进出机房人员必须佩带印有照片的IDC机房出入证。 所有机房出入24小时由专业保安对出入人员进行身份验证(核对照片)。 门禁系统通过指纹及IC卡双重验证来人身份。工作人员随时可以通过电脑了解整个机房每个房间人员的情况。 所有房间均安装有闭路电视系统&#xff…
最新文章