获取流中序列化对象的数量以随机选择一个

本文关键字:选择 随机 一个 序列化 对象 获取 | 更新日期: 2023-09-27 18:14:20

我试图获得我正在序列化和反序列化的流中序列化对象的数量。我想这样做是为了创建一个介于1和那个量之间的随机值。

这是可能的吗?怎么做?

目前我的代码是:

Random rnd = new Random();
Stream stream = new FileStream("File.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
int randomNumber = rnd.Next(1, (int)stream.Length);

然而,这将不起作用,因为stream.Length值超过1000,而文件中大约有3个序列化对象。

我使用BinaryFormatter进行序列化。

编辑:我应该补充一下,序列化到文件中的对象是多维数组(int[,]),并且它们有一个数字存储。第一个物体的数字是1,第二个是2,以此类推。提前感谢!

获取流中序列化对象的数量以随机选择一个

您可以从未知大小的列表中随机选择一个项目,但是您必须扫描整个列表才能做到这一点。但是,您不必为了选择一个条目而将所有条目保存在内存中。

请参阅我的文章随机选择从大组,特别是标题"如果我不知道有多少。"