要保存 System.Random 的状态,可以使用序列化和反序列化的方法。下面是一个使用 BinaryFormatter 进行序列化和反序列化的示例代码:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class Program
{
public static void Main(string[] args)
{
// 创建一个 Random 对象
Random random = new Random();
// 序列化 Random 对象
byte[] serializedState = SerializeRandom(random);
// 反序列化 Random 对象
Random deserializedRandom = DeserializeRandom(serializedState);
// 使用反序列化后的 Random 对象生成随机数
int randomNumber = deserializedRandom.Next();
Console.WriteLine(randomNumber);
}
private static byte[] SerializeRandom(Random random)
{
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, random);
return memoryStream.ToArray();
}
}
private static Random DeserializeRandom(byte[] serializedState)
{
using (MemoryStream memoryStream = new MemoryStream(serializedState))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
return (Random)binaryFormatter.Deserialize(memoryStream);
}
}
}
在上面的示例中,首先创建了一个 Random 对象 random,然后使用 SerializeRandom 方法将其序列化为字节数组 serializedState。接着使用 DeserializeRandom 方法将字节数组反序列化为 Random 对象 deserializedRandom。最后使用 deserializedRandom 生成随机数。
请注意,在使用 BinaryFormatter 进行序列化和反序列化时,被序列化的类型必须标记为 [Serializable]。在上面的示例中,Random 类型已经标记为 [Serializable]。
上一篇:保存 Switch 的状态