[C#学习笔记] 在C#中如何创建不同数据类型的数组?

发布于:2025-09-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、数组(Array)

数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。声明数组是声明一个就像 numbers 这样的变量,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来表示一个个单独的变量。数组中某个指定的元素是通过索引来访问的。

二、创建数组

创建数组包括声明和初始化。

声明数组通常按照以下格式声明:

datatype[] arrayName;

其中,

datatype 用于指定元素类型 可以设置不同类型的数组,例如int,string等,在五、数组的数据类型 中有详细列举
[] 用于指定数组的大小
arrayName 指定数组的名称

例如

string[] Result;

声明了一个类型为string,名称为Result的数组。在声明时不能指定数组大小。

通过使用new关键字来创建数组实例,实现数组的初始化。例如

string[] Result = new string[10];

三、给数组赋值

我们可以在声明数组的同时给数组赋值,例如

string[] Result = {"A991","A991","A345","A123","A111","A990" };

我们也可以在初始化数组时给数组赋值,例如

string[] Result2 = new string[6] { "B991", "B991", "B345", "B123", "B111", "B990" };

在上述情况下,我们亦可以省略数组的大小,例如

string[] Result2 = new string[] { "B991", "B991", "B345", "B123", "B111", "B990" };

除了以上方法,我们还可以通过使用索引号赋值给数组中的单个元素,例如

string[] Result3 = new string[10];
Result3[0] = "A333";

顺便一提,数组索引从0开始

我们也可以将一个数组变量赋值给另一个目标数组变量中。在这种情况下,目标和源会指向相同的内存位置。

string[] Result2 = new string[] { "B991", "B991", "B345", "B123", "B111", "B990" };
string[] Result3 = Result2;

四、访问数组元素

元素是通过索引实现的。使用方式为:

string[] Result2 = new string[] { "B991", "B991", "B345", "B123", "B111", "B990" };
string Result3 = Result2[1];

程序中将数组Result2中索引为1对应的数据赋值给变量Result3

除了直接用=赋值,还可以通过循环给数组进行赋值和访问,例如

使用for循环
using System;
namespace ArrayApplication
{
   class MyArray
   {
      static void Main(string[] args)
      {
         int []  n = new int[10]; /* n 是一个带有 10 个整数的数组 */
         int i,j;


         /* 初始化数组 n 中的元素 */        
         for ( i = 0; i < 10; i++ )
         {
            n[ i ] = i + 100;
         }

         /* 输出每个数组元素的值 */
         for (j = 0; j < 10; j++ )
         {
            Console.WriteLine("Element[{0}] = {1}", j, n[j]);
         }
         Console.ReadKey();
      }
   }
}
使用foreach遍历
using System;

namespace ArrayApplication
{
   class MyArray
   {
      static void Main(string[] args)
      {
         int []  n = new int[10]; /* n 是一个带有 10 个整数的数组 */


         /* 初始化数组 n 中的元素 */        
         for ( int i = 0; i < 10; i++ )
         {
            n[i] = i + 100;
         }

         /* 输出每个数组元素的值 */
         foreach (int j in n )
         {
            int i = j-100;
            Console.WriteLine("Element[{0}] = {1}", i, j);
         }
         Console.ReadKey();
      }
   }
}

五、数组的数据类型

前面提到

datatype[] arrayName; 中

datatype 用于指定元素类型 可以设置不同类型的数组。

C#中的数据类型体系,这分为两大类:值类型和引用类型。值类型包括整数、浮点、布尔值、字符等,引用类型包括字符串、类、接口、数组等。这些类型都可以作为数组的元素类型。打算把常见的值类型和引用类型都列出来。

此外,还有一些特殊类型的数组,如对象数组和动态数组,他们的使用频率较高,且具有一定的灵活性。

基本数据类型(值类型)

1.整数类型
int[] intArray = new int[5];
uint[] uintArray = new uint[5];
short[] shortArray = new short[5];
long[] longArray = new long[5];
2.浮点类型
float[] floatArray = new float[5];
double[] doubleArray = new double[5];
decimal[] decimalArray = new decimal[5];
3.布尔类型
bool[] boolArray = new bool[5];
4.字符类型
char[] charArray = new char[5];

其中 

char 类型用于存储单个字符。字符可以是字母、数字、符号或 Unicode 字符集中的任何字符。char 类型在内存中占用 2 个字节,并且是无符号的。

char 类型在需要处理单个字符的情况下非常有用,比如在字符串处理、字符分析或需要单独处理字符的应用场景中。

示例

char letter = 'A';          // 存储字母 A
char digit = '5';           // 存储数字 5
char symbol = '$';          // 存储美元符号
char whitespace = ' ';      // 存储空格
char unicodeChar = '\u03A9';// 存储 Unicode 字符(希腊字母 Ω)
5.字节类型
byte[] by = new byte[5]

引用数据类型

1.字符串类型
string[] stringArray = new string[5];
2.对象类型
object[] objectArray = new object[5];
3.数组类型

也就是说数组套数组

int[][] jaggedArray = new int[5][];

例如

string[][] jaggedArray = new string[5][];
jaggedArray[0] = new string[] { "A991", "A992", "A993" };
jaggedArray[1] = new string[] { "B991", "B992", "B993", "B994" };
jaggedArray[2] = new string[] { "U991", "U992", "U993", "U994" };

像是五个一维数组的集合

4.类类型
MyClass[] classArray = new MyClass[5];

例如

public class Sensor
    {
        public int No { get; set; }
        public double Temperature { get; set; }
    }      

//
static void Test3()
        {
            Sensor sensor = new Sensor();
            sensor.No = 1;
            sensor.Temperature = 25.6;//将来可以从下位机读取
            Sensor[] sensorArray=new Sensor[2];
            sensorArray[0] =new Sensor() { No=2,Temperature=26.7};
            sensorArray[1] = new Sensor() { No = 3, Temperature = 27.7 };
            Equipment4 equip = new Equipment4();
            equip.CurrentSensor = sensor;
            equip.SensorArray = sensorArray;                    
           
        }

5.接口类型
IMyInterface[] interfaceArray = new IMyInterface[5];

特殊数据类型

1.动态类型
dynamic[] dynamicArray = new dynamic[5];
2.可空类型
int?[] nullableIntArray = new int?[5];
bool?[] nullableBoolArray = new bool?[5];

学习来源:C# 数组(Array) | 菜鸟教程

六、数组的属性和方法

讲完了如何声明和赋值一个数组,再来讲讲我们常用的对数组进行的操作

Array类是C#中所有数组的基类,位于System命名空间下。Array类提供了各种用于数组的属性和方法。我们通过使用Array的属性或方法实现对数组相应的操作。

输入in length =sensorArray.后,关键在数组名后面的·点,会自动出现Array类的属性和方法供我们使用。如下图所示。

经过我浅薄的分析知:扳手符号代表数组属性,正方体符号代表方法。所以对数组的操作的关键是常用的属性和方法。

常用的方法在下面链接:

学习来源:C# Array 类 | 菜鸟教程

七、扩展知识

多维数组

C#支持多维数组,多维数组也叫矩阵数组,声明方式如下:

//声明一个string变量的二维数组,如下
string [,] names;
//或者,声明一个int变量的三维数组,如下
int [ , , ] m;
二维数组

多维数组最简单的形式是二维数组。一个二维数组可以被认为是一个带有X行和Y列的表格,也可以理解为相应的矩阵。下面是一个二维数组,包括3行和4列:

因此,数组中每个元素是以a[ i , j ]的名称来标识的,其中a是数组名称,i和j是用于标识元素的下标,代表行和列。

初始化和访问二维数组

多维数组可以通过在括号内为每行指定值来进行初始化,读取时通过使用下标来访问。

int [,] a = new int [3,4] //初始化方式
{
 {0, 1, 2, 3} ,   /*  初始化索引号为 0 的行 */
 {4, 5, 6, 7} ,   /*  初始化索引号为 1 的行 */
 {8, 9, 10, 11}   /*  初始化索引号为 2 的行 */
};
int val = a[2,3];//**重要的访问格式
Console.WriteLine("val= {0}", val);

上面的聚集将获取数组中第3行第4个元素(因为数组的索引从0开始)。

交错数组

交错数组是数组的数组,也就是前面讲过的数组套数组。交错数组是一维数组。声明方式同数组类型数组,如下

string[][] jaggedArray

声明一个数组不会在内存中创建数组,初始化时创建:

string[][] jaggedArray = new string[5][];
jaggedArray[0] = new string[] { "A991", "A992", "A993" };
jaggedArray[1] = new string[] { "B991", "B992", "B993", "B994" };
jaggedArray[2] = new string[] { "U991", "U992", "U993", "U994" };
string pin = jaggedArray[0][0];//交错数组访问格式
Console.WriteLine("pin = {0}",pin);
Console.WriteLine("jaggedArray[0][0] = {0}",jaggedArray[0][0] );

其中,jaggeArray是由五个string类型数组成的数组,其中只填充了三个数组的内容:jaggedArray[0]是一个带有3个字符串的数组,jaggedArray[1]和jaggedArray[2]则是带有4个字符串数据的数组,jaggedArray[3]和jaggedArray[4]没有定义,内容为空。

参数数组

在C#中,可以传递数组作为函数的参数。通过指定不带索引的数组名称来给函数传递一个指向数组的指针。

下面的实例延时了如何传递数组给函数:

using System;

namespace ArrayApplication
{
   class MyArray
   {
      double getAverage(int[] arr, int size)
      {
         int i;
         double avg;
         int sum = 0;

         for (i = 0; i < size; ++i)
         {
            sum += arr[i];
         }

         avg = (double)sum / size;
         return avg;
      }
      static void Main(string[] args)
      {
         MyArray app = new MyArray();
         /* 一个带有 5 个元素的 int 数组 */
         int [] balance = new int[]{1000, 2, 3, 17, 50};
         double avg;

         /* 传递数组的指针作为参数 */
         avg = app.getAverage(balance, 5 ) ;

         /* 输出返回值 */
         Console.WriteLine( "平均值是: {0} ", avg );
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

平均值是: 214.4

学习来源:

C# 多维数组 | 菜鸟教程

C# 交错数组 | 菜鸟教程

C# 参数数组 | 菜鸟教程

八、关于多维数组和交错数组的补充

关于多维数组、交错数组、数组类型数组异同看这里

关于多维数组、交错数组、数组类型数组异同-CSDN博客


网站公告

今日签到

点亮在社区的每一天
去签到