c#中的数据类型简介(数组)
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#中的数据类型简介(数组)的更多相关文章
- c#中的数据类型简介(枚举)
C#中的数据类型简介(枚举) 枚举的定义 根据MSDN上给出的定义,枚举是一个指定的常数集,其基础类型可以是除Char外的任何整型. 如果没有显式声明基础类型,则使用 Int32. Enum 是 .N ...
- c#中的数据类型简介(委托)
c#中的数据类型简介(委托) 什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature).定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名, ...
- c#中的数据类型简介
一.C#中的变量和常量 C#中用于定义常量的方式有两种一个使用const关键字,一个是用readonly关键字.使用const定义的常量叫静态常量(compile-time constant),用re ...
- c#中的数据类型简介(string)
Sting 字符串 引入话题 字符串是一个引用类型,从string数据类型的代码定义中也可以看出它实现了IEnumerable<char>接口和IEnumerable接口,因此字符串可以看 ...
- c#中的数据类型简介(委托)
什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature)和返回类型.定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名,其实就是指方法的输入 ...
- Oracle中PL/SQL简介、基本语法以及数据类型
Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- c++中的数据类型
1.数据类型简介 c++中数据类型分为两种:预定义类型和自定义数据类型. 预定义类型:整型(int 4个字节) 字符型 布尔型 (bool) 浮点型(4个字节) 空类型:关键字void,不能用于普通变 ...
- redis中各种数据类型对应的jedis操作命令
redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...
随机推荐
- Linux下重要日志文件及查看方式
http://os.51cto.com/art/201108/282184_all.htm 1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...
- Android中进程生命周期的优先级
“我们不是生产者,我只是大自然的搬运工.” 学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍.原文如 ...
- achartengine 实现平行线 动态数据 x轴动态移动
achartengine做平行线的时候经常会遇到: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 at java.ut ...
- 今天进行了一次IOS面试,分享一下面试结果
IOS开发工程师岗位职责:1.负责移动产品IOS版客户端软件开发:2.可根据需求独立完成客户端软件的设计和开发;3.日常工作包括手机软件系统开发.单元测试.维护以及文档编写:不定期的公司内部培训.任职 ...
- poj-2403-cup
题目描述 The WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume o ...
- hdu2206IP的计算
Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方 ...
- hdoj分类
http://blog.csdn.net/lyy289065406/article/details/6642573 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 ...
- Nginx 变量漫谈(三)
也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串.我们来看一个 ...
- tomcat------https单向认证和双向认证
一.https分为单向认证和双向认证: 单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己 ...
- createDocumentFragment
http://www.cnblogs.com/myjavascript/p/3708920.html 对于循环批量操作页面的DOM有很大帮助!利用文档碎片处理,然后一次性append,并且使用原生的j ...