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类型 ...
随机推荐
- javascript 事件代理及应用
事件代理又叫事件委托在前端发开中实际是非常有用的,说事件代理之前我们先说说事件绑定 <p onclick="test()" ></p> function t ...
- JavaMail发送简单邮件
非常简单的发送邮件实现,网上有很多啦,但还是自己写写记录下吧. package cn.jmail.test; import java.util.Properties; import javax.mai ...
- Java三大特征之多态(三)
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- Android 贝塞尔曲线
博客图片备份位置:
- 纯CSS3技术 加载中
你能相信吗?这些都是由一个DIV元素实现的动画,纯CSS3技术 html <div class="loader">加载中...</div> css: 图( ...
- Android 展示键盘时候布局被修改的问题
解决方法,在mainfest.xml中,对那个Activity加: <activity android:name=".activity.HomeActivity"androi ...
- python 调用shell或windows命令
目前使用到的有两种方式:os.system()和os.popen() import os os.system('cd e:cjx') #调用后返回执行结果状态 如果想获得返回结果,则使用以下方式: i ...
- FastReport.net 使用记录
FastReport.net 打印设计功能非常强大,打印内容可以自己设计.数据源可以来至许多个表,打印设计后的表格数据是以二进制保存在数据库中的. 1.打印设计: private void Desi ...
- Vue.js实现拼图游戏
Vue.js实现拼图游戏 之前写过一篇<基于Vue.js的表格分页组件>的文章,主要介绍了Vue组件的编写方法,有兴趣的可以访问这里进行阅读:http://www.cnblogs.com/ ...
- 利用Azure Backup备份和恢复虚拟机(2)
虚拟机注册之后,下一步就是将他们添加为受保护的项,在菜单底部,单击"保护"按照提示选择需要保护的虚拟机 单击"下一步",在这个页面中需要选择配置虚拟机配 ...