Office中国论坛/Access中国论坛
标题:
【原创】关于:一维零基数组,多个创建方式(茴字有几个写法)
[打印本页]
作者:
faunus
时间:
2014-2-23 10:32
标题:
【原创】关于:一维零基数组,多个创建方式(茴字有几个写法)
回归本质,聊一聊数组,只讨论最基础的
关于:一维零基数组
定义:
[1]零基,zero-based, 最小索引为0
[2]一维,相对于(多维,交错)
[3]效率,编译器又开后门了
[A]提供了IL操作指令newarr
[B]访问数组时不需要通过索引减去偏移量来完成,
[C]而且JIT也只需执行一次范围检查
实例化时必须指定数组的大小,
实例后不能改变数据的大小
[4]缺点
实例化时必须指定数组的大小
实例化后也不能改变数组结构
(不能添加,插入,删除结点,但可以改变结点的内容)
集合的基础之一,集合的三种基础结构:
[1]基于数组
[2]基于链表
[3]基于位
作者:
faunus
时间:
2014-2-23 10:32
本帖最后由 faunus 于 2014-2-23 10:38 编辑
创建方式:(茴字有几个写法)
[1]显式创建
//显式创建
Array myArray = Array.CreateInstance(typeof(string), 3);
myArray.SetValue("a", 0);
myArray.SetValue("b", 1);
myArray.SetValue("c", 2);
//无法直接赋值,导至出错
//myArray[0] = 99;//无法将带[]的索引应用于“System.Array”类型的表达式
//必须经过显式的转换
int[] myArrayConvert = (int[])myArray;
myArrayConvert[0] = 99;
复制代码
作者:
faunus
时间:
2014-2-23 10:33
本帖最后由 faunus 于 2014-2-23 10:38 编辑
[2]常规创建
int[] myArray = new int[3];
myArray[0] = 0;
myArray[1] = 1;
myArray[2] = 2;
复制代码
作者:
faunus
时间:
2014-2-23 10:33
本帖最后由 faunus 于 2014-2-23 10:38 编辑
[3]隐式创建
//正确书写方法
int[] myArray0 = { 0, 1, 2 };
int[] myArray1 = { 0, 1, 2, };
int[] myArray2 = new []{ 0, 1, 2 };
int[] myArray3 = new int[] { 0, 1, 2 };
int[] myArray4 = new int[3] { 0, 1, 2 };
//错误书写方法
//int[] myArrayErr = { 0, 1, "a" };//无法将类型“string”隐式转换为“int”
//int[] myArrayErr = new[] { 0, 1, "a" };//找不到隐式类型数组的最佳类型
//int[] myArrayErr = new[3] { 0, 1, 2 };//语法错误,应输入“]”
//int[] myArrayErr = new int[4] { 0, 1, 2 };//无效的秩说明符: 应为“,”或“]”
复制代码
作者:
faunus
时间:
2014-2-23 10:33
本帖最后由 faunus 于 2014-2-23 10:39 编辑
[4]匿名创建
//正确书写方法
var myArray1 = new[] { 0, 1, 2 };
var myArray2 = new int[] { 0, 1, 2 };
var myArray3 = new int[3] { 0, 1, 2 };
//错误书写方法
//var myArrayErr = { 0, 1, 2 };//无法用数组初始值设定项初始化隐式类型的局部变量
复制代码
作者:
faunus
时间:
2014-2-23 10:34
本帖最后由 faunus 于 2014-2-23 10:40 编辑
[5]其它
int i = 1;
char c = 'a';
string s = "s";
//正确书写方法
int[] myArray0 = { 0, i, 2 };
int[] myArray1 = { 0, c, 2 };//隐式转换
//错误书写方法
//int[] myArrayErr = { 0, s, 2 };//无法将类型“string”隐式转换为“int”
复制代码
作者:
faunus
时间:
2014-2-23 10:40
说明:
在隐式的匿名的创建方式中,
数据的赋值实际上是调用了IList接口上的.Add()方法,
了解数组类,最好的的办法是:自己实现一个数组类试试^_^
//提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。
[Serializable]
[ComVisible(true)]
public abstract class Array : ICloneable, IList, ICollection, IEnumerable { }
复制代码
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3