C#.net int[] arr1 ;和 int[] arr1= new int[10] ;不定长数组定义问题

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)以下的声明

byte[] byteSum2;
int[] arr1;

只是说明了byteSum2是一个字节数组,arr1是一个整型数组;根本没有“定长”的含义!

2)有了上面数组声明,执行以下语句后

byteSum2 = BitConverter.GetBytes(byteSum1);
arr1 = new int[10];

变量 byteSum2 “指向”了由BitConverter.GetBytes(byteSum1)创建的字节数组;

变量 arr1“指向”了由 new int[10] 实例化而来的整型数组;

3)“定长”的含义是指 BitConverter.GetBytes(byteSum1)、new int[10]语句所创建数组的元素的数量是“固定”的。也就是,一旦创建完毕,数组元素的数量是固定不变的!

4)更进一步,以下代码有助于理解“定长”数组的概念

int[] arr;
// 先让arr指向一个10个元素的数组
arr1 = new int[10];
// 再让arr指向一个3个元素的数组
arr = new int[] {10, 20, 30};
// 再让arr指向一个300个元素的数组
arr = new int[300];

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-05
int[] arr1是声明的一个指针
new int[10]才是开辟了10个实际的空间,可以使用的空间

int[] arr1 = new int[10] 表示用arr1指向这10个空间,以后你就可以利用arr1这个名字使用这10个空间

c#不定长数组如何定义
C#没有不定长数组这种东西,一般建议用Llist泛型,当你需要里再转成数组就行了,形如 List<int> list = new List<int>();list.Add(3);list.Add(9);int[] arr = list.ToArray();

.net 下用C#产生一个永不重复10位随机数
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));int[] arrNum=new int[10];int tmp=0;int minValue=1;int maxValue=10;for (int i=0;i<10;i++){tmp=ra.Next(minValue,maxValue); \/\/随机取数arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); \/\/取出值赋到数组中}.....

C#自定义类数组的初始化问题
CMyclass[] 是引用类型。int[] 是值类型。

有关c#代码中 “byte[] 变量名” 的问题?
byte就是类型的数据,byte[]是定义的数组啊,另外string 和string[]是不一样的,string相当于是一个char[],char类型的数组,而string[]就是平时指的字符串数组

c#中如何定义空数组
int[] a=new int[10],string[] s=new string[10]。定义一维数组 int[] arr1,定义二维数组 int[,] arr2,定义三维数组 int[,,]arr3;long[,,]arr4MyClass[] mcArr5=new MyClass[4];\/\/四个元素 数组的创建表达式 int[,,] arr6=new int[3,6,5] \/\/3,6,5是维度长度 显示初始化...

在c#中如何比较多个数字的大小?
用一维数组存储这12个月的工资,然后排序即可,第一个和最后一个就是最低工资和最高工资。int[] arr=new int[]{800,1000,600,500,400,100,300,1200,700,900,1100,200};Array.Sort(arr);MessageBox.Show(arr[0].ToSTring()); \/\/得到最低工资100MessageBox.Show(arr[11].ToSTring());\/\/得到最高工资1200...

c#.net 如何定义可变长度数组属性
C#中没有不定长数组吧,还是使用 private List<string> width=new ArrayList<string>();public ArrayList<string> width { set { _width= value; } get { return _width; } } 吧

我想在C#中定义一个全为0的数组,该 怎么办?
在C#中只要声明了一个数组,系统就会自动将其中每一项赋值为0,赋不赋值没区别

C# 数组长度需要变化时怎么定义?
"C#里面数组是无法动态改变大小的,这是因为数组定义时声明的是Array类,而Array类是不能重新定义大小的。如果你想创建一个动态大小的数组,则可以用ArrayList类,如下:System.Collections.ArrayList aa=new System.Collections.ArrayList();在使用的时候,可以用aa.Add方法向里面添加元素,Remove删除元素,...

在C#里,string[]和arr都可以定义数组,区别是什么?
string[]只能定义为字符型数组,也就是char类型的字符串~而array可以是任意类型和任意维数的~~比如声明一个二维整型数组A:int arr_A[][];希望能帮上你~

相似回答