網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、概述
數(shù)組為引用類型,其中的元素固定。 定義后不能增加刪除元素。(如果事先不知道應(yīng)包含多少元素,則應(yīng)使用List集合)。數(shù)組可以包含同一類型的多個(gè)元素。
數(shù)組實(shí)現(xiàn)了IEumerable,ICollection,IList接口的部分功能。
二、聲明數(shù)組變量及使用
1、一維數(shù)組:[]
聲明及初始化:
int[] arr1 = new int[5];//聲明帶5個(gè)元素的數(shù)組
//或者
int[] arr2 = new int[] { 1, 3, 5, 7, 9 };
//或者
int[] arr3 = { 1, 3, 5, 7, 9 };
數(shù)組元素為引用類型:
Person[] arrPerson = new Person[2];
arrPerson[0] = new Person {"a","af"};
Person[] arrPerson2 = {new Person {"a","af"},new Person {"c","cf"}}
訪問(wèn)數(shù)組元素,為數(shù)組元素賦值:
int a = arr1[0];//整數(shù)索引。
arr1[3] = 7;
遍歷
for (int i = 0; i < arr1.Length; i++)
{
Console.WriteLine(i + "," + arr1[i]);
}
//或者
foreach (int item in arr2)
{
Console.WriteLine(item);
}
2、二維數(shù)組:[,]
聲明及初始化:
int[,] arr1 = new int[2, 3];//兩行三列
int[,] arr2 = { { 1, 2, 3 }, { 4, 5, 6 } };
訪問(wèn)數(shù)組元素,為數(shù)組元素賦值:
arr1[0, 2] = 25;//為數(shù)組的第一行第三列元素賦值為25
遍歷:
for (int i = 0; i < arr1.GetLength(0); i++)
{
for (int j = 0; j < arr1.GetLength(1); j++)
{
Console.WriteLine(i + "," + j + "," + arr1[i, j]);
}
}
3、鋸齒數(shù)組:[][]
每一行的元素個(gè)數(shù)可以不一樣,數(shù)組的數(shù)組。
聲明及初始化:
int[][] arr1 = new int[][]
{
new int[] { 1, 2 },new int[] {3,4,5}
};
訪問(wèn)數(shù)組元素,為數(shù)組元素賦值:
arr1[0] = new int[] { 1, 2 };
arr1[1] = new int[] { 3, 4, 5 };
遍歷:
for (int i = 0; i < arr1.Length; i++)
{
for (int j = 0; j < arr1[i].Length; j++)
{
Console.WriteLine(i + "," + j + "," + arr1[i][j]);
}
}
三、Array類
Arrary類為抽象類,用括號(hào)[]聲明是C#中使用Array類的簡(jiǎn)寫(xiě)形式。
Array array = Array.CreateInstance(typeof(int), 5);//相當(dāng)于 int[] array=new int[5];
for (int i = 0; i < 5; i++)
{
array.SetValue(33, i);
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(array.GetValue(i));
}
Arrary類實(shí)現(xiàn)了以下接口:
- IEumerable:使用foreach語(yǔ)句遍歷,必須實(shí)現(xiàn)此接口。
- ICollection:IEumerable
- IList:ICollection
- ICloneable
四、Array類的成員
- Length : 獲取 Array 的所有維度中的元素總數(shù)。
- Rank: 獲取 Array 的秩(維數(shù))。 例如,一維數(shù)組返回 1,二維數(shù)組返回 2,依次類推。
- GetLength(Int32): 獲取一個(gè) 32 位整數(shù),該整數(shù)表示 Array 的指定維中的元素?cái)?shù)。
- GetLowerBound(Int32) : 獲取數(shù)組中指定維度第一個(gè)元素的索引。
- GetUpperBound(Int32): 獲取數(shù)組中指定維度最后一個(gè)元素的索引。
五、Array類的靜態(tài)方法
1、Array.Sort 排序
1、使用 Array 中每個(gè)元素的 IComparable 實(shí)現(xiàn),對(duì)一維 Array 中的部分元素進(jìn)行排序。
public static void Sort (Array array, int index, int length);
實(shí)例:
void Main()
{
Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
Array.Sort(ArrPerson);
foreach (Person p in ArrPerson)
{
Console.WriteLine(p);
}
}
public class Person : IComparable
{
public string FirstName;
public string LastName;
public Person(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
public int CompareTo(object obj)
{
Person other = obj as Person;
int result = this.LastName.CompareTo(other.LastName);//如果實(shí)例應(yīng)排在參數(shù)對(duì)象前面,返回負(fù)數(shù);如果實(shí)例應(yīng)排在參數(shù)對(duì)象后面,返回整數(shù);如果實(shí)例與參數(shù)對(duì)象相等,返回0;
if (result == 0)
{ result = this.FirstName.CompareTo(other.FirstName); }
return result;
}
}
2、使用指定的 IComparer,對(duì)一維 Array 中的部分元素進(jìn)行排序。
comparer:比較元素時(shí)要使用的 IComparer 實(shí)現(xiàn)。或 若為 null,則使用每個(gè)元素的 IComparable 實(shí)現(xiàn)。
public static void Sort (Array array, int index, int length, System.Collections.IComparer comparer);
實(shí)例:
void Main()
{
Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
Array.Sort(ArrPerson, new PersonComparer());
foreach (Person p in ArrPerson)
{
Console.WriteLine(p);
}
}
public class Person
{
public string FirstName;
public string LastName;
public Person(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
public class PersonComparer : IComparer
{
public int Compare(object x, object y)
{
Person p1 = x as Person;
Person other = y as Person;
int result = p1.LastName.CompareTo(other.LastName);
if (result == 0)
{ result = p1.FirstName.CompareTo(other.FirstName); }
return result;
}
}
2、Array.Reverse(Array, Int32, Int32) 反轉(zhuǎn)
反轉(zhuǎn)一維 Array 中某部分元素的元素順序。
3、Array.IndexOf(Array, Object, Int32, Int32) 查找位置
在一個(gè)一維數(shù)組的一系列元素中搜索指定對(duì)象,然后返回其首個(gè)匹配項(xiàng)的索引。 該元素系列的范圍從指定數(shù)量的元素的指定索引開(kāi)始。
4、Array.LastIndexOf(Array, Object, Int32, Int32)
搜索指定的對(duì)象并返回一維 Array 中包含指定數(shù)目元素且在指定索引處結(jié)尾的元素范圍內(nèi)的最后一個(gè)匹配項(xiàng)的索引。
5、Array.Clear(Array, Int32, Int32) 清除元素的值
將數(shù)組中的某個(gè)范圍的元素設(shè)置為每個(gè)元素類型的默認(rèn)值。元素個(gè)數(shù)不變
6、Array.Copy(Array, Int32, Array, Int32, Int32) 復(fù)制到一個(gè)已有數(shù)組
復(fù)制 Array 中的一系列元素(從指定的源索引開(kāi)始),并將它們粘貼到另一 Array 中(從指定的目標(biāo)索引開(kāi)始)。 長(zhǎng)度和索引指定為 32 位整數(shù)。
7、Array.Clone() 創(chuàng)建一個(gè)新數(shù)組
創(chuàng)建 Array 的淺表副本。
原文鏈接:https://www.cnblogs.com/springsnow/p/9428505.html
相關(guān)推薦
- 2022-07-15 go使用consul實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及配置共享實(shí)現(xiàn)詳解_Golang
- 2023-01-13 基于C#實(shí)現(xiàn)屏幕取色器_C#教程
- 2022-10-11 微信小程序與Netty實(shí)現(xiàn)的WebSocket聊天程序
- 2022-12-10 C++中如何將數(shù)據(jù)保存為CSV文件_C 語(yǔ)言
- 2022-03-20 Redis實(shí)現(xiàn)分布式鎖方法(redis分布式鎖的實(shí)現(xiàn)原理)
- 2022-07-11 Python利用xlrd?與?xlwt?模塊操作?Excel_python
- 2022-08-14 python?open函數(shù)中newline參數(shù)實(shí)例詳解_python
- 2022-09-27 OpenCV中findContours函數(shù)參數(shù)詳解_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支