C#初级学习-数组

  • 命名空间:System
  • 数组声明:<数据类型>[] <数组名>=new <数据类型>[维数]
string[] students = new string[6] { "张三", "李四", "王五", "赵六", "孙七", "周八" };
  • 多维数组与交错数组

      1.多维数组在声明时必须指定数组的长度,其格式为:type[length,length,length.....],或直接在声明时赋值,由系统自动判断其长度。

 int [,] a=new int [3,3];
 int [,] b={
            {1,2,3},{4,5,6},{7,8,9},
           }

       交错数组在声明时,至少要指定第一维数组的长度,格式为:type[][][][][].....,同样也可以直接在声明时赋值,有系统判断其长度。
 

int [][] c=new int[5][];       
int [][] d={                        
            new int [] {1,2,3,4,5},                         
            new int [] {1,2,3},                        
            new int [] {1,2,3,4,5,6},                       
            }

2.在为多维数组赋值时,其长度必须前后保持一致,且赋值长度必须与所声明的长度保持一致(与C语言不同,必须全赋值,而在C语言中,系统会自动为没有赋值的位置赋0)

 int [,]=new int[2,3]{
                     {1},//错误
                     {2,2,2},
                     }

 

  • 数组、ArrayList、List、Dictionary

数组   命名空间:System

          在初始化时必须指定其大小和类型,在内存中是连续存储,通过其数值类型与索引值很容易可以找到数组值。

          缺点:在声明时必须指定数组长度,若数组长度过长,会造成内存浪费,若过短,容易造成溢出,且插入不便。          

ArrayList    命名空间:System.Collections

        ArrayList对象的大小是按照其中存储的数据来动态扩充和收缩的,因此在初始化的时候不需要指定其大小和类型,其默认初始容量为0,可以存储不同的数据类型,但是在存取过程中会引起装箱和拆箱,容易引起类型不匹配的错误,因此ArrayList是不安全的。

        ArrayList继承了IList接口,提供数据存储与检索。

using System;
using System.Collections;
public class SamplesArrayList  {

   public static void Main()  {

      ArrayList myAL = new ArrayList();
      myAL.Add("Hello");
      myAL.Add("World");
      myAL.Add("!");

      Console.WriteLine( "myAL" );
      Console.WriteLine( "    Count:    {0}", myAL.Count );
      Console.WriteLine( "    Capacity: {0}", myAL.Capacity );
      Console.Write( "    Values:" );
      PrintValues( myAL );
   }

   public static void PrintValues( IEnumerable myList )  {
      foreach ( Object obj in myList )Console.Write( "   {0}", obj );
      Console.WriteLine();
      Console.ReadKey();
   }

}

List:ArrayList的泛型等效类,其大部分操作与ArrayList等效,但较ArrayList安全。

       在初始化的时候必须指定其类型,但是不需要指定大小,所以在存取过程中不会引起装箱和拆箱操作,在类型相同的情况下,List和数组的性能相当。

Dictionary:在初始化的时候也必须指定其类型,而且他还需要指定一个Key,并且这个Key是唯一的。正因为这样,Dictionary的索引速度非常快,通过Key来查找元素的,元素的顺序是不定的。

总结:

1.数组的容量固定,而ArrayList或List<T>的容量可根据需要自动扩充。
2.数组可有多个维度,而 ArrayList或 List< T> 始终只有一个维度。(可以创建数组列表或列表的列表)
3.特定类型的数组性能优于 ArrayList的性能(不包括Object,因为 ArrayList的元素是 Object ,在存储或检索值类型时通常发生装箱和取消装箱操作)。
4.ArrayList 和 List<T>基本等效,如果List< T> 类的类型T是引用类型,则两个类的行为是完全相同的。如果T是值类型,需要考虑装箱和拆箱造成的性能损耗。List<T> 是类型安全。

  • 数组的高级使用

参考网页:https://docs.microsoft.com/zh-cn/dotnet/api/system.array?view=netframework-4.7.2

                  https://www.jb51.net/Special/265.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值