我们都知道数组:固定长度,并且里面装的数据的类型要保持一致
现在给大家举个例子:
首先我们定义一个类: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;
}
}
}