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类型 ...
随机推荐
- 【计算几何初步:多边形中心】【HDU1115】Lifting the Stone
一.质点系重心公式 x=(x1*m1+x2*m2+x3*m3.....xn*mn)/M (M=m1+m2+m3+m4...+mn) 二.三角形重心 可直接求得,但在多边形剖分中 各三角形的质点的质量 ...
- 字符串最小表示法 O(n)算法
网上看了这篇文章后还是感觉有些地方讲的没有详细的证明所以添加了一点 红色字是博主写的 求字符串的循环最小表示: 上面说的两个字符串同构的,并没有直接先求出Min(s),而是通过指针移动,当某次匹配串长 ...
- cookie 和 session 基本使用 以及 封装
Cookie: 是一小段文本信息,用户请求页面的时候,在浏览器和服务器之间传递.用户每次访问的时候都会记录cookie,cookie里可以包含用户信息,浏览的历史记录等等:Cookie是由服务器端生成 ...
- Java单例模式的线程安全问题
单例模式有两种书写模式:饿汉式和懒汉式. 1.饿汉式 class Single{ private final static Single s = new Single(); private Singl ...
- css权重计算
第一等:代表内联样式,如: style=””,权值为1000. 第二等:代表ID选择器,如:#content,权值为100. 第三等:代表类,伪类和属性选择器,如.content,权值为1 ...
- ASP.NET通用权限组件思路设计
开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到 ...
- linq读书笔记2-查询内存中的对象
上次我们说到了linq对数组内容的检索,自.net2.0以后,泛型成了很常见的一种应用技术,linq对泛型的检索也提供了完善的支持 如对list类型的支持,范例如下: class Program ...
- Eclipse MyEclipse 复制项目 复制现有项目 复制功能相似项目
如果现在已经存在一个Java Web项目 ProjectA,现在想做另外一个项目,里面绝大部分功能和结构都可以复用,如果想通过复制的方法来,那么可以这么做: 1.到资源管理器中,将ProjectA文件 ...
- Servlet Examples
Servlet Examples Servlet Examples 1.Hello World output: code: 1.import java.io.*;2.import javax.serv ...
- CSS 怀疑 Verify
1. height 之前好像看到有人说,div标签的height设置一个固定值后,div标签的height会随着内容的增多而变大 经测试,内容会溢出div标签,但div标签的height不会随着变化