//综合练习--更新的UserList类cs文件
class UserList
{
private User[] UserDataSZ = null;
/*public User[] UserData
{
get { return this.UserDataSZ;}
set { this.UserDataSZ = value; }
}
*/
private int CountNum = 0;
public int CountNumSX
{
get { return this.CountNum;}
}
public UserList():this(10)
{
}
public UserList(int rongL)
{
UserDataSZ = new User[rongL];
}
//在类中创建方法的时候,是否静态要跟构造函数一致,一般不需要静态修饰符!!
public User[] Add(User value)
{
int CountNum = 0;
for (int i = 0; i <= UserDataSZ.Length; i++)
{
//
if (i == UserDataSZ.Length)
{
CountNum = i;
//新建一个临时数组并扩容
User[] newUserDataSZ = new User[i+10];
//复制旧数组内的索引至临时数组中
UserDataSZ.CopyTo(newUserDataSZ, 0);
//初始化旧数组,并扩容至和临时数组一致
UserDataSZ = new User[newUserDataSZ.Length];
//复制临时数组内的索引至旧数组中
newUserDataSZ.CopyTo(UserDataSZ, 0);
//初始化临时数组(删除垃圾)
newUserDataSZ = null;
}
//判断当前索引是否有对象,无对象引用时,将当前位置数组索引值赋值给CountNum
if (UserDataSZ==null)
{
CountNum = i;
break;
}
}
//根据CountNum索引值,判断是否小于等于数组的大小,判断成功则将对象索引赋值给存储数组
if (UserDataSZ.Length >= CountNum)
{
UserDataSZ[CountNum] = value;
this.CountNum++;
}
return UserDataSZ;
}
public UserList Insert(UserList UserListDX,int index,User UserDX)
{
User[] newUserDataSZ = new User[UserListDX.UserDataSZ.Length];
//判断插入的索引值是否超过UserList对象里面的数组的最大值,是则直接返回对象
if (index > UserListDX.UserDataSZ.Length || index < 0)
{
return UserListDX;
}
else
{
//如果插入数据之后把数组撑爆,则需要扩容
if (index > UserListDX.UserDataSZ.Length)
{
//新建一个临时数组并扩容
//User[] newUserDataSZ = new User[UserListDX.UserDataSZ.Length+1];
newUserDataSZ = new User[UserListDX.UserDataSZ.Length + 1];
//复制旧数组内的索引至临时数组中
UserListDX.UserDataSZ.CopyTo(newUserDataSZ, 0);
//初始化旧数组,并扩容至和临时数组一致
UserListDX.UserDataSZ = new User[newUserDataSZ.Length];
//复制临时数组内的索引至旧数组中
newUserDataSZ.CopyTo(UserListDX.UserDataSZ, 0);
//初始化临时数组(删除垃圾)
//newUserDataSZ = null;
}
int forXHi = 0;
for (int i = 0; i < UserListDX.UserDataSZ.Length; i++)
{
if (i==index)
{
i++;
}
newUserDataSZ = UserListDX.UserDataSZ[forXHi];
forXHi++;
}
newUserDataSZ.CopyTo(UserListDX.UserDataSZ, 0);
newUserDataSZ = null;
//UserListDX.UserDataSZ[index] = null;
UserListDX.Add(UserDX);
//this.CountNum++;
return UserListDX;
}
}
public UserList DeleteUser(UserList UserListDX, int index)
{
User[] newUserDataSZ = new User[UserListDX.UserDataSZ.Length];
//判断插入的索引值是否超过UserList对象里面的数组的最大值,是则直接返回对象
if (index > UserListDX.UserDataSZ.Length || index < 0)
{
return UserListDX;
}
else
{
UserListDX.UserDataSZ[index] = null;
int forXHi = 0;
for (int i = 0; i <= UserListDX.UserDataSZ.Length-1; i++)
{
if (UserListDX.UserDataSZ==null)
{
UserListDX.UserDataSZ = UserListDX.UserDataSZ[i + 1];
UserListDX.UserDataSZ[i + 1] = null;
}
if (i > this.CountNum)
{
break;
}
}
this.CountNum--;
return UserListDX;
}
}
public User GetUser(int index)
{
return UserDataSZ[index];
}
}
|