C#.net int[] arr1 ;和 int[] arr1= new int[10] ;不定长数组定义问题
int[]arr1;是不是声明了一个不定长数组,与int[]arr1=newint[10]声明了一个十个元素的数组是否有区别直接使用第一种声明也没出错啊inti=0;in...
int[] arr1 ; 是不是 声明了一个不定长数组, 与int[] arr1= new int[10] 声明了一个十个元素的数组 是否有区别 直接使用第一种 声明也没出错啊 int i =0; int byteSum1; byte [] byteSum2; byte byteSum ; byteSum1 = Convert.ToInt32(i + 0xAB + 0xCD + 0x2E + 0x00); byteSum2 = BitConverter.GetBytes(byteSum1); byteSum = byteSum2[0]; 不是说数组是定长的吗, 为什么使用时没报错。
展开
展开全部
关键在于你对“定长数组”的理解有偏差。
1)以下的声明
12byte[] byteSum2;int[] arr1;
只是说明了byteSum2是一个字节数组,arr1是一个整型数组;根本没有“定长”的含义!
2)有了上面数组声明,执行以下语句后
12byteSum2 = BitConverter.GetBytes(byteSum1);arr1 = new int[10];
变量
byteSum2
“指向”了由BitConverter.GetBytes(byteSum1)创建的字节数组;
变量
arr1“指向”了由
new
int[10]
实例化而来的整型数组;
3)“定长”的含义是指
BitConverter.GetBytes(byteSum1)、new
int[10]语句所创建数组的元素的数量是“固定”的。也就是,一旦创建完毕,数组元素的数量是固定不变的!
4)更进一步,以下代码有助于理解“定长”数组的概念
1234567int[] arr;// 先让arr指向一个10个元素的数组arr1 = new int[10];// 再让arr指向一个3个元素的数组arr = new int[] {10, 20, 30};// 再让arr指向一个300个元素的数组arr = new int[300];
1)以下的声明
12byte[] byteSum2;int[] arr1;
只是说明了byteSum2是一个字节数组,arr1是一个整型数组;根本没有“定长”的含义!
2)有了上面数组声明,执行以下语句后
12byteSum2 = BitConverter.GetBytes(byteSum1);arr1 = new int[10];
变量
byteSum2
“指向”了由BitConverter.GetBytes(byteSum1)创建的字节数组;
变量
arr1“指向”了由
new
int[10]
实例化而来的整型数组;
3)“定长”的含义是指
BitConverter.GetBytes(byteSum1)、new
int[10]语句所创建数组的元素的数量是“固定”的。也就是,一旦创建完毕,数组元素的数量是固定不变的!
4)更进一步,以下代码有助于理解“定长”数组的概念
1234567int[] arr;// 先让arr指向一个10个元素的数组arr1 = new int[10];// 再让arr指向一个3个元素的数组arr = new int[] {10, 20, 30};// 再让arr指向一个300个元素的数组arr = new int[300];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询