我有一个通用列表
如何删除项目?
EX:
Class Student
{
private number;
public Number
{
get( return number;)
set( number = value;)
}
private name;
public Name
{
get( return name;)
set( name = value;)
}
main()
{
static List<student> = new list<student>();
list.remove...???
}
}
Run Code Online (Sandbox Code Playgroud)
Ed *_* S. 24
好吧,没有什么可以删除,因为你的列表是空的(你也没有给它一个标识符,所以你的代码将无法编译).您可以使用Remove(T item)或RemoveAt(int index)分别删除指定索引处的对象或对象(一旦实际包含某些内容).
受控代码示例:
void Main(...)
{
var list = new List<Student>();
Student s = new Student(...);
list.Add(s);
list.Remove(s); //removes 's' if it is in the list based on the result of the .Equals method
list.RemoveAt(0); //removes the item at index 0, use the first example if possible/appropriate
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*mov 17
根据您的意见,我得出结论,您从输入中读取学生姓名,您需要删除具有指定姓名的学生.
class Student {
public string Name { get; set; }
public int Number { get; set; }
public Student (string name, int number)
{
Name = name;
Number = number;
}
}
var students = new List<Student> {
new Student ("Daniel", 10),
new Student ("Mike", 20),
new Student ("Ashley", 42)
};
var nameToRemove = Console.ReadLine ();
students.RemoveAll (s => s.Name == nameToRemove); // remove by condition
Run Code Online (Sandbox Code Playgroud)
请注意,这将删除所有具有指定姓名的学生.
如果您需要删除按名称找到的第一个学生,请先使用First方法找到他,然后调用Remove该实例:
var firstMatch = students.First (s => s.Name == nameToRemove);
students.Remove (firstMatch);
Run Code Online (Sandbox Code Playgroud)
如果您想要在删除之前确保只有一名学生具有指定名称Single,请以类似的方式使用:
var onlyMatch = students.Single (s => s.Name == nameToRemove);
students.Remove (onlyMatch);
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有一个项与谓词匹配,则Single调用将失败.