C#数组参数问题

    class TestArray
    {
        public TestArray()
        { 
            m_bytelist = new List();
        }
        private List m_bytelist;
        
        private byte[] getBytes()
        {
            m_bytelist.Add(12);
            m_bytelist.Add(11);
            m_bytelist.Add(10);
            return m_bytelist.ToArray();
        }

        private void setBytes( byte[] buffTemp) 
        {
            Array.Resize(ref buffTemp, 4);
            buffTemp[0] = 0;
            buffTemp[1] = 1;
            buffTemp[2] = 2;
            buffTemp[3] = 3;

            foreach (byte byteTemp in buffTemp)
            {
                Console.WriteLine("setbyte[]:{0}", byteTemp);
            }
        }

        public void println() 
        {
            byte[] buffTemp = getBytes();
            setBytes(buffTemp);
            Array.Resize(ref buffTemp, 2);
            foreach (byte byteTemp in buffTemp) 
            {
                Console.WriteLine("byte[]:{0}", byteTemp);
            }

            foreach (byte byteTemp in m_bytelist)
            {
                Console.WriteLine("list:{0}",byteTemp);
            }
        }
    }

输出:setBytes( byte[] buffTemp)传递数组参数不改变原来数组的值,重新生成一份新的数组。m_bytelist.ToArray()同样生成一份新的数组。

setbyte[]:0
setbyte[]:1
setbyte[]:2
setbyte[]:3
byte[]:12
byte[]:11
list:12
list:11
list:10

延伸:setBytes( ref byte[] buffTemp) 使用引用类型传递的是当前的数组,会改变原本的值。

setbyte[]:0
setbyte[]:1
setbyte[]:2
setbyte[]:3
byte[]:0
byte[]:1
list:12
list:11
list:10

你可能感兴趣的:(C#数组参数问题)