介绍
首先我们需要明确一下对象序列化与反序列化的概念,对象序列化就是将对象转化为可以存储或传输的格式。相反,反序列化表示将存储格式或传输格式转化为对象。
C#语言提供了一个方便的API,可以使用这个API轻松地将对象序列化和反序列化。这个API被称为“System.Runtime.Serialization”。
C#对象序列化示例
接下来我们将演示如何使用C#对象序列化,我们将会创建一个Person类,并使用此类的实例来演示对象序列化和反序列化。下面是Person类的结构。
[Serializable]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
首先,我们需要将Person对象序列化并存储到文件中。以下是序列化一个Person对象的示例代码。
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Serialization
{
[Serializable]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Create a new Person object
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30
};
// Serializing Person object
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("person.bin", FileMode.Create))
{
formatter.Serialize(stream, person);
}
Console.WriteLine("Person object serialized successfully.");
}
}
}
在上面的示例中,我们首先创建了一个名为“person”的Person对象。接下来,我们使用BinaryFormatter类序列化这个对象,并将其存储在名为“person.bin”的文件中。使用“using”块,我们可以确保文件流在执行完序列化后自动被关闭。最后,我们输出一条消息“序列化成功”。
C#对象反序列化示例
下面我们将演示如何使用C#对象反序列化。在这个示例中,我们将从文件中反序列化一个Person对象。以下是完整的代码示例。
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Serialization
{
[Serializable]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Deserializing Person object
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("person.bin", FileMode.Open))
{
Person person = (Person)formatter.Deserialize(stream);
Console.WriteLine("Person object deserialized successfully.");
Console.WriteLine("First name: " + person.FirstName);
Console.WriteLine("Last name: " + person.LastName);
Console.WriteLine("Age: " + person.Age);
}
}
}
}
在上面的代码示例中,我们首先使用BinaryFormatter类反序列化Person对象,并从名为“person.bin”的文件中读取该对象。一旦反序列化成功,我们将Person对象分配给“person”变量。最后,我们输出了反序列化后的Person对象的数据。如果一切顺利,你将看到一条消息“反序列化成功”并显示Person对象的数据。
结束语
希望上述示例能够帮助你更好地理解C#中的对象序列化和反序列化。在以上的示例中,我们演示了如何使用BinaryFormatter类进行序列化和反序列化。除此之外,C#中还有其他格式可以使用,例如Json格式,使用Json序列化和反序列化需要使用Newtonsoft.Json类库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#对象反序列化与对象序列化示例详解 - Python技术站