C#数组长度固定的,如何再添加数据呢?

我们都知道数组:固定长度,并且里面装的数据的类型要保持一致

现在给大家举个例子:
首先我们定义一个类:Customer类
代码截图:
在这里插入图片描述

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Customer
    {
        /// <summary>
        /// 无参构造方法
        /// </summary>
        public Customer()
        {

        }
        /// <summary>
        /// 有参构造方法
        /// </summary>
        /// <param name="name">客户姓名</param>
        /// <param name="age">客户年龄</param>
        /// <param name="address">客户地址</param>
        public Customer(string name,int age,string address)
        {
            this.Name = name;
            this.Age = age;
            this.Address = address;
        }
        /// <summary>
        /// 字段:姓名
        /// </summary>
        private string name;
        /// <summary>
        /// 字段:年龄
        /// </summary>
        private int age;
        /// <summary>
        /// 字段:地址
        /// </summary>
        private string address;

        /// <summary>
        /// 属性:姓名
        /// </summary>
        public string Name { get => name; set => name = value; }
        /// <summary>
        /// 属性:年龄
        /// </summary>
        public int Age { get => age; set => age = value; }
        /// <summary>
        /// 属性:地址
        /// </summary>
        public string Address { get => address; set => address = value; }
    }
}

第二步:解释已经写在了注释中
代码截图:
在这里插入图片描述

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个数组,长度为2,也就是说只能存储两个客户在这个数组里
            Customer[] list = new Customer[2];
            //创建客户
            Customer xiaoming = new Customer("小明",21,"湖南省");
            Customer xiaomei = new Customer("小美",22,"北京市");
            //上面我们已经创建了两个客户了
            //第三个客户
            Customer xiaoli = new Customer("小丽",23,"广州市");
            //将创建的客户放入数组中去
            list[0] = xiaoming;
            list[1] = xiaomei;
            //这时已经放了两个客户到数组中去了,数组已经满了,不可以在放了
            //假设我再放入一个客户到数组中去
            list[2] = xiaoli;
            //通过for循环输出每个学生的姓名
            for(int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i].Name);
            }
        }
      
    }
}

这时,通过调试,会发现报错,报错信息如下:
在这里插入图片描述
原因就在于,我们定义数组的时候,给的长度是2个长度,也就是里面只能装两个同学的信息,但是后面我们又添加了一个同学到数组中去,这时就会超出数组原本的长度,从而报错。如何解决这个问题,其实有很多种方法,比如可以使用集合。但这里我们就还是用数组的方式解决这个问题。

解决方案如下:
代码截图:
在这里插入图片描述
代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个数组,长度为2,也就是说只能存储两个客户在这个数组里
            Customer[] list = new Customer[2];
            //创建客户
            Customer xiaoming = new Customer("小明",21,"湖南省");
            Customer xiaomei = new Customer("小美",22,"北京市");
            //上面我们已经创建了两个客户了
            //第三个客户
            Customer xiaoli = new Customer("小丽",23,"广州市");
            //将创建的客户放入数组中去
            list[0] = xiaoming;
            list[1] = xiaomei;
            //将第三个客户放入数组中去
            list = Add(list,xiaoli);
            //通过for循环打印姓名
            for(int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i].Name);
            }
           
        }
        public static Customer[] Add(Customer[] list, Customer addStr)
        {
            //创建新的数组
            Customer[] listNew = new Customer[list.Length + 1];
            //将原数组的数据拷贝到新数组
            list.CopyTo(listNew, 0);
            //向新数组的最后一位复制
            listNew[list.Length] = addStr;
            //将原数组置空
            list = null;
            return listNew;
        }

    }
}

以下与上面的例子类似,不需要去定义一个customer类。类型为string类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化数组,并复制
            string[] strArray = new string[2];
            strArray[0] = "小红";
            strArray[1] = "小明";
            strArray = Add(strArray, "小丽");
            strArray = Add(strArray,"小美");
            Console.WriteLine("同学们:");
            for(int i = 0; i < strArray.Length; i++)
            {
                Console.WriteLine(strArray[i]);
            }
        }
        public static string[]Add(string[]strArray,string addStr)
        {
            //创建新的数组
            string[] newArray = new string[strArray.Length + 1];
            //将原数组的数据拷贝到新数组
            strArray.CopyTo(newArray, 0);
            //向新数组的最后一位复制
            newArray[strArray.Length] = addStr;
            //将原数组置空
            strArray = null;
            return newArray;
        }
    }
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值