c#中的数据类型简介(数组)

数组定义

  • 可以将数组看成相同数据类型的一组或多组数据,包括一维数组,多维数组和交错数组。
  • 数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。
  • 交错数组是指元素为数组的数组,因此,它的元素是引用类型,初始化为 null。
  • 数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。

数据申明

一维数组的几种申明和初始化

type[]  typeName = new type[n];                                                //定义数组但是未赋值

type[0] = item1;

type[1] = item2;

type[2] = item3; ......

type[n-1] =itemn;

type[]  typeName = new type[n] { item1,item2,item3,......itemn};//系统可以自动推算数组长度

type[]  typeName = new type[] { item1,item2,item3,......itemn};  //系统可以自动推算数组长度

type[]  typeNmae = {item1,item2,item3,......itemn};      //省略赋值的数据类型,系统可以自动推断,最简洁的定义方式

多维数组和交错数组的申明和初始化与一维数组类似,请看以下示例程序:

    class Program
{
static void Main(string[] args)
{
int[] intA = new int[];
intA[] = ;
intA[] = ;
intA[] = ;
intA[] = ;
intA[] = ;
int[] intB = new int[] { , , , , };
int[] intC = new int[] { , , , , };
int[] intD = { , , , , }; //数组的取值,返回索引位3的值,返回的值为3
int item3 = intA[];
//int[]的抽象基类System.Array,继承了IEnumerable接口,可以使用foreach遍历数组成员
foreach (int item in intA)
Console.WriteLine("item is:{0}", item);
//可以使用for循环访问数组成员
for (int i = ; i < intA.Length; i++)
Console.WriteLine("each is :{0}", intA[i]);
//表明数组成员可以被赋值
bool b1 = intA.IsReadOnly; //返回false
bool b2 = intA.IsSynchronized; //返回false,可以异步访问
//数组一经定义好后,是不能被新增、插入、删除的
bool b3 = intA.IsFixedSize; //返回true,表示数组是固定长度的 //多维数组申明和初始化
string[,] strA = new string[,]{ { "GZ", "SZ" }, { "CD", "DZ" }, { "CS", "ZZ" } };
string[,] strB = new string[,] { { "GZ", "SZ" }, { "CD", "DZ" }, { "CS", "ZZ" } };
string[,] strC = { { "GZ", "SZ" }, { "CD", "DZ" }, { "CS", "ZZ" } };
string[,] strD = new string[, ];
strD[, ] = "GZ"; strD[, ] = "SZ";
//多维数组的取值
string item11 = strA[, ];
string itemX = strD[,]; //初始化未赋值,其默认值为null
//多维数组成员foreach遍历
foreach (string item in strA)
Console.WriteLine("foreach遍历:{0}",item);
//多维度成员的for遍历,w1和w2用来计算各维度的元素个数,也可用getLength方法获取
int w1 = strA.GetUpperBound()+;
int w2 = strA.GetUpperBound()+;
for (int i = ; i < w2; i++)
for (int j = ; j < w1; j++)
Console.WriteLine("for遍历:{0}",strA[i, j]); //交错数组,表示成员为数组的数组
int[][] arry = new int[][];
arry[] = new int[] { , , };
arry[] = new int[] { , , , };
foreach (var item in arry)
foreach (int element in item)
Console.WriteLine(element);
}
}

数组抽象基类System.Array

System.Array是具体数组的抽象类,具体数组继承自System.Array类,通过Array可以创建一维,多维数组,并遍历数组。请看如下的程序示例:

        static void Main(string[] args)
{
//使用System.Array静态方法CreateInstance创建数组实例
Array strArray = Array.CreateInstance(typeof(string), );
strArray.SetValue("beijing", );
strArray.SetValue("shanghai", );
strArray.SetValue("tianjin", );
strArray.SetValue("chongqin", );
//上面的写法等价于
Array strArray1 = new string[]{"beijing","shanghai","tianjin","chongqin"};
//foreach 遍历数组
foreach (var item in strArray)
Console.WriteLine("foreach一维数组遍历list:{0}",item);
//for 遍历数组
for (int i = ; i < strArray.Length; i++)
Console.WriteLine("for一维数组遍历list:{0}",strArray.GetValue(i));
//反转一维数组strArray
Array.Reverse(strArray);
//Array 创建多维数组
Array strArray2 = Array.CreateInstance(typeof(int), new int[] { , });
strArray2.SetValue(,new int[]{,});
strArray2.SetValue(, new int[] { , });
strArray2.SetValue(, new int[] { , });
strArray2.SetValue(, new int[] { , });
strArray2.SetValue(, new int[] { , });
strArray2.SetValue(, new int[] { , });
//上面的多维数组定义等价于
int[,] strArray3 = new int[,] { { , }, { , }, { , } };
foreach (var item in strArray2)
Console.WriteLine("foreach多维数组遍历:{0}",item);
//0维度的长度为3,其上限为2,其下限为0,运行结果显示OK,OK
if (strArray2.GetLength() == strArray2.GetUpperBound() - strArray2.GetLowerBound() + )
Console.WriteLine("OK,OK");
}

c#中的数据类型简介(数组)的更多相关文章

  1. c#中的数据类型简介(枚举)

    C#中的数据类型简介(枚举) 枚举的定义 根据MSDN上给出的定义,枚举是一个指定的常数集,其基础类型可以是除Char外的任何整型. 如果没有显式声明基础类型,则使用 Int32. Enum 是 .N ...

  2. c#中的数据类型简介(委托)

    c#中的数据类型简介(委托) 什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature).定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名, ...

  3. c#中的数据类型简介

    一.C#中的变量和常量 C#中用于定义常量的方式有两种一个使用const关键字,一个是用readonly关键字.使用const定义的常量叫静态常量(compile-time constant),用re ...

  4. c#中的数据类型简介(string)

    Sting 字符串 引入话题 字符串是一个引用类型,从string数据类型的代码定义中也可以看出它实现了IEnumerable<char>接口和IEnumerable接口,因此字符串可以看 ...

  5. c#中的数据类型简介(委托)

    什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature)和返回类型.定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名,其实就是指方法的输入 ...

  6. Oracle中PL/SQL简介、基本语法以及数据类型

    Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...

  7. java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;

    <java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...

  8. c++中的数据类型

    1.数据类型简介 c++中数据类型分为两种:预定义类型和自定义数据类型. 预定义类型:整型(int 4个字节) 字符型 布尔型 (bool) 浮点型(4个字节) 空类型:关键字void,不能用于普通变 ...

  9. redis中各种数据类型对应的jedis操作命令

    redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...

随机推荐

  1. C# 坦克大战学习总结

    1.学会用Resource管理资源 添加资源 在properties下的Resource.resx添加资源 使用资源 工程名.Properties.Resource.资源名 实际本质,是一个流. 2. ...

  2. linux系统如何限制其他用户登录

    用root 用户登录到系统排查问题,这个时候不希望别的账户登录到系统,你如何处理? vim /etc/nologin 将账号添加到此文件中去,你会发现其他用户都无法登录,报错信息如下:即连接即中断.

  3. MVCC图示

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 [作者:高健@博客园 luckyjackgao ...

  4. .net如何后台批量删除

    button_Click(Sender sender,Event e){foreach (DataListItem item in DataList1.Items){CheckBox cbox=(Ch ...

  5. 关于String字符串反转

    这是网上看到的一篇java面试题中的问题: 问题是: 如何将一个String字符串反转. String str = "1234567"; int length = str.leng ...

  6. ios app相互调用

    被调用app配置 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NS ...

  7. windows系统下搭建Python开发环境

    1.首先下载最新的Python http://www.python.org/download/,我下载的是最新的Python3.5.1 2.下载完成之后开始安装,安装就比较简单了,一路下一步. 3.安 ...

  8. CSS 垂直居中5种方法

    利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...

  9. HDU 5793 - A Boring Question

    HDU 5793 - A Boring Question题意: 计算 ( ∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1]  ) % 1000000007=? (C[ ...

  10. 初识ege图形库

    简介: EGE (Easy Graphics Engine),是Windows 下的简易绘图库, 是一个类似BGI (graphics.h)的 面向C/C++语言新手的图形库,对新手来说,简单,友好, ...