我试图获得我正在序列化和反序列化的流中序列化对象的数量。我想这样做是为了创建一个介于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,以此类推。提前感谢!
您可以从未知大小的列表中随机选择一个项目,但是您必须扫描整个列表才能做到这一点。但是,您不必为了选择一个条目而将所有条目保存在内存中。
请参阅我的文章随机选择从大组,特别是标题"如果我不知道有多少。"