C# 无法将对象强制转换为列表
我有一段代码,我试图将我创建的对象强制转换为列表,但它不会将对象强制转换为列表。我不知道为什么会这样C# 无法将对象强制转换为列表,c#,list,C#,List,我有一段代码,我试图将我创建的对象强制转换为列表,但它不会将对象强制转换为列表。我不知道为什么会这样 FileStream fs = new FileStream("students.dat", FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); List<Student> studentList = (List<Student>)bf.Deserialize(fs); 对象创建如下所示: [Seria
FileStream fs = new FileStream("students.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
List<Student> studentList = (List<Student>)bf.Deserialize(fs);
对象创建如下所示:
[Serializable]
class Student
{
private String name;
private String surname;
private String id;
private int lab;
private int assign1;
private int assign2;
private int exam;
public Student(String name, String surname, String id)
{
this.name = name;
this.surname = surname;
this.id = id;
this.lab = 0;
this.assign1 = 0;
this.assign2 = 0;
this.exam = 0;
}
public Student(String name, String surname, String id, int lab, int assign1, int assign2, int exam)
{
this.name = name;
this.surname = surname;
this.id = id;
this.lab = lab;
this.assign1 = assign1;
this.assign2 = assign2;
this.exam = exam;
}
}
我只是想弄明白为什么它不会将对象强制转换到列表中,而它在过去是这样做的。在此问题上的任何帮助都将不胜感激。此错误似乎表明您序列化了
学生
,而不是列表
如果有可能被序列化,那么只需检查强制转换并为学生
案例创建一个新列表:
object readObject = bf.Deserialize(fs);
if (readObject is List<Student>)
return (List<Student>)readObject
else if (readObject is Student)
return new List<Student>() { (Student)readObject };
else
return null;
object readObject=bf.反序列化(fs);
如果(readObject是列表)
返回(列表)readObject
else if(readObject是学生)
返回新列表(){(学生)readObject};
其他的
返回null;
您是序列化了列表还是序列化了学生?如果你序列化了一个学生对象,那么在反序列化时将其强制转换到列表将不起作用。非常感谢。我不知道怎么做,因为连载对我来说是半新鲜的事情。
object readObject = bf.Deserialize(fs);
if (readObject is List<Student>)
return (List<Student>)readObject
else if (readObject is Student)
return new List<Student>() { (Student)readObject };
else
return null;