当前位置:  编程技术>.net/c#/asp.net

解析C#中[],List,Array,ArrayList的区别及应用

    来源: 互联网  发布时间:2014-10-27

    本文导语:  [] 是针对特定类型、固定长度的。 List 是针对特定类型、任意长度的。 Array 是针对任意类型、固定长度的。 ArrayList 是针对任意类型、任意长度的。 Array 和 ArrayList 是通过存储 object 实现任意类型的,所以使用时要转换。 应用...

[] 是针对特定类型、固定长度的。

List 是针对特定类型、任意长度的。

Array 是针对任意类型、固定长度的。

ArrayList 是针对任意类型、任意长度的。

Array 和 ArrayList 是通过存储 object 实现任意类型的,所以使用时要转换。

应用示例

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // System.Int32 是结构
        int[] arr = new int[] { 1, 2, 3 };
        Response.Write(arr[0]); // 1
        Change(arr);
        Response.Write(arr[0]); // 2

        // List 的命名空间是 System.Collections.Generic
        List list = new List();
        list.Add(1);
        list.Add(2);
        list.Add(3);
        Response.Write(list[0]); // 1
        Change(list);
        Response.Write(list[0]); // 2

        // Array 的命名空间是 System
        Array array = Array.CreateInstance(System.Type.GetType("System.Int32"), 3); // Array 是抽象类,不能使用 new Array 创建。
        array.SetValue(1, 0);
        array.SetValue(2, 1);
        array.SetValue(3, 2);
        Response.Write(array.GetValue(0)); // 1
        Change(array);
        Response.Write(array.GetValue(0)); // 2

        // ArrayList 的命名空间是 System.Collections
        ArrayList arrayList = new ArrayList(3);
        arrayList.Add(1);
        arrayList.Add(2);
        arrayList.Add(3);
        Response.Write(arrayList[0]); // 1
        Change(arrayList);
        Response.Write(arrayList[0]); // 2
    }

    private void Change(int[] arr)
    {
        for (int i = 0; i < arr.Length; i++)
        {
            arr[i] *= 2;
        }
    }

    private void Change(List list)
    {
        for (int i = 0; i < list.Count; i++) // 使用 Count
        {
            list[i] *= 2;
        }
    }


    private void Change(Array array)
    {
        for (int i = 0; i < array.Length; i++) // 使用 Length
        {
            array.SetValue((int)array.GetValue(i) * 2, i); // 需要类型转换
        }
    }

    private void Change(ArrayList arrayList)
    {
        for (int i = 0; i < arrayList.Count; i++) // 使用 Count
        {
            arrayList[i] = (int)arrayList[i] * 2; // 需要类型转换
        }
    }
}


另外。

把一个对象数组转换成ArrayList可以使用ArrayList.Adapter方法。这个方法把一个IList包裹在一个ArrayLIst里。

Person[] personArray = myPerson.GetPersons();
ArrayList personList = ArrayList.Adapter(personArray);

把一个ArrayList转换成对象数组可以使用ArrayList.ToArray方法。

Person[] personArrayFromList = (Person[])personList.ToArray(typeof(Person));

不要忘了在调用ArrayList.ToArray方法之前进行强制类型转换,否则在编译的时候会出错提示你不能把一个ArrayList转换成Person对象数组。


    
 
 

您可能感兴趣的文章:

  • C#解析JSON实例
  • 解析C#中#region与#if的作用
  • C# DES加密算法中向量的作用详细解析
  • C#中FormClosing与FormClosed的区别详细解析
  • c#中switch case的用法实例解析
  • C#枚举类型与结构类型实例解析
  • js substr,substring与java substring和C# substring的区别解析
  • C#类的创建与初始化实例解析
  • c#使用htmlagilitypack解析html格式字符串
  • C#的WebBrowser操作frame实例解析
  • 解析C#中如何把控件的边框角画为圆弧
  • 解析c#显示友好时间的实现代码
  • C#中out与ref的区别实例解析
  • C#事务处理(Execute Transaction)实例解析
  • c#使用nsoup解析html乱码解决方法分享 nsoup教程
  • 解析C#彩色图像灰度化算法的实现代码详解
  • Visual C#类的定义及实现方法实例解析
  • C#中私有构造函数的特点和用途实例解析
  • 解析c#操作excel后关闭excel.exe的方法
  • C#委托所蕴含的函数指针概念详细解析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 解析四方定理的应用
  • Android入门之TableLayout应用解析(一)
  • C++ clock()解析如何使用时钟计时的应用
  • 解析Android应用启动后自动创建桌面快捷方式的实现方法
  • 解析android创建快捷方式会启动两个应用的问题
  • Android入门之TableLayout应用解析(二)
  • 解析Android应用程序运行机制
  • 解析sizeof, strlen, 指针以及数组作为函数参数的应用
  • 解析Android 如何获得已安装应用大小
  • Android入门之ListView应用解析(一)
  • a2sd+状态下应用程序丢失的解决方法详细解析
  • 解析Android开发优化之:软引用与弱引用的应用
  • Android入门之ListView应用解析(二)
  • 共用体的定义与应用详细解析
  • JDBC之PreparedStatement类中预编译的综合应用解析
  • c#多线程的应用全面解析
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 请教redhat9下什么命令执行arp解析和逆向arp解析
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 如何用libxml2 默认解析器解析HTML文件
  • 基于Python的Html/xml解析库Beautiful Soup 4.2.1发布
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • 为什么我在使用nslookup命令的时候,正向解析(域名-》ip)没有问题,反向解析(ip-》域名)怎么查不到呢? iis7站长之家
  • 配置DNS服务器后,服务器可解析,客户端不能解析。求解
  • Python下Html/xml解析库Beautiful Soup快速入门教程
  • 为什么我在使用nslookup命令的时候,正向解析(域名-》ip)没有问题,反向解析(ip-》域名)怎么查不到呢?
  • 基于Python的html解析库:pyquery最新版主页及pyquery下载
  • 服务器本机能解析域名,其它机子都解析不到,能ping通dns服务器地址,是什么问题?//
  • python下xml解析库lxml最新版下载安装以及代码示例
  • 我有一个DNS服务器,既要解析自己局域网里IP,有要解析外网上的IP,如www.163.com,我该如何设置呢
  • python对XML的解析方法(SAX,DOM,ElementTree)介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3