list.remove(a) 这句报错吧,a 是new的一个新对象 与list.Add(new Student)不是同一个对象,
当你remove一个没有添加到list中的对象时当然是不可以的,
应该不会报错的,就算没有添加,楼主瞎搞,代码胡写。你有见过class student{string name,int age}的写法么。
不建议使用ArrayList,直接使用泛型多好。
我也想呀
你代码有写对吗?
现在那?
这是老师给的简便问题
不过意思就那意思
@ζั͡ޓއއއ๓ 堕落:
你代码写错了吧?类能直接这样写? 就算你移除a,arrayList 也不会报错
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("运行开始!");
ArrayList list = new ArrayList();
list.Add(new Student("aa", 11));
Student objStudent = new Student("aa", 11);
list.Remove(objStudent);
Console.WriteLine(list.Count);
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
class Student
{
public string name; public int age;
public Student(string name, int age)
{
this.name = name; this.age = age;
}
}
@雾静: 是JAVA问题 不是C#问题,不过还是谢谢你
@ζั͡ޓއއއ๓ 堕落: 哦。Java不是很懂,但是如果是C#。以上代码应该没问题,如果移除是报错,可能是未将对象的引用设置到对象的实例吧,因为压根就没添加a啊。都是对象的引用,就算值一样,指向的对象地址应该是不同的。
@雾静: 这个到懂 但不知道怎么做 哎 好无奈
@ζั͡ޓއއއ๓ 堕落: 你是想移除名字为“aa”的这个吗?如果是好办,如果不是,不用理会为什么要做这个,没有任何意义
当然会错啦
list.add(new Student("aa",12));
Student a=new Student("aa",12);
每次new一个实例 都会分配过内存 虽然你 list.add(new Student("aa",12));里边的student实例的属性 和 student a 的属性值相等 ; but! 这两个实例一点关系都木有
你现在是要remove 名字为aa age为12的话只能 遍历arraylist的所有项 判断~然后remove , 用泛型的话会好点吧 比如dictionary<string,Student> dic=new dictionary<string,Student> (); dic.Add(student.Name,student);
java中的arraylist的话 就遍历吧~~ 骚年