Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这里会有例外?我是不是投得不好?_C#_File_Serialization_Io - Fatal编程技术网

C# 为什么这里会有例外?我是不是投得不好?

C# 为什么这里会有例外?我是不是投得不好?,c#,file,serialization,io,C#,File,Serialization,Io,当我运行此命令时: public List<Animal> LoadFromFile() { // DECLARING ITEMS FOR FILE MANIPULATION fs = new FileStream(FileName, FileMode.Open, FileAccess.Read); bf = new BinaryFormatter(); List<Animal> tempList =

当我运行此命令时:

public List<Animal> LoadFromFile()
    {
        // DECLARING ITEMS FOR FILE MANIPULATION
        fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
        bf = new BinaryFormatter();
        List<Animal> tempList = new List<Animal>();

        // DE-SERIALIZING

        while (fs.Position < fs.Length)
        {
            Animal p = (Animal)bf.Deserialize(fs);
            tempList.Add(p);
        }

            return tempList;
    }
我得到一个System.InvalidCastException类型的异常,表示:

无法将类型为“System.Collections.Generic.List`1[AnimalShelterManager.Animal]”的对象强制转换为类型为“AnimalShelterManager.Animal”

这是什么意思?括号之间的内容实际上是我希望在反序列化时将其转换为的类型。包含列表和动物类的类以及从中继承的类都是[可序列化]。

错误:

无法强制转换类型为的对象 'System.Collections.Generic.List`1[AnimalShelterManager.Animal]'到 键入“AnimalShelterManager.Animal”

这就说明了一切。您将动物列表强制转换为动物,您的反序列化将返回一个可能包含一个动物元素的项目列表。调试代码并确保这一点,并在强制转换之前使用FirstOrDefault获取第一个元素。

能否将其更改为var p=Listbf.Deserializefs;,并注释掉templast.Addp;只是为了看看它的效果?