{"id":14539,"date":"2024-03-15T09:28:09","date_gmt":"2024-03-15T09:28:09","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/"},"modified":"2025-08-06T10:05:04","modified_gmt":"2025-08-06T10:05:04","slug":"how-to-achieve-serialization-and-deserialization-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/","title":{"rendered":"C# Serialization and Deserialization Guide"},"content":{"rendered":"<p>In C#, serialization and deserialization can be used to convert objects into byte streams or strings for transferring or storing data between different applications.<\/p>\n<p>To achieve serialization and deserialization, you need to use the relevant classes and interfaces in the System.Runtime.Serialization namespace. Below is a simple example demonstrating how to implement serialization and deserialization in C#.<\/p>\n<ol>\n<li>Create a class that can be serialized, which must be marked with the attribute [Serializable] to indicate that it can be serialized.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code>[<span class=\"hljs-meta\">Serializable<\/span>]\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span>\r\n{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">string<\/span> Name { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">int<\/span> Age { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>Use the BinaryFormatter class from the System.Runtime.Serialization.Formatters.Binary namespace for serialization and deserialization.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">using<\/span> System;\r\n<span class=\"hljs-keyword\">using<\/span> System.IO;\r\n<span class=\"hljs-keyword\">using<\/span> System.Runtime.Serialization.Formatters.Binary;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Program<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Main<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span>[] args<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-comment\">\/\/ \u521b\u5efa\u4e00\u4e2a Person \u5bf9\u8c61<\/span>\r\n        Person person = <span class=\"hljs-keyword\">new<\/span> Person\r\n        {\r\n            Name = <span class=\"hljs-string\">\"John\"<\/span>,\r\n            Age = <span class=\"hljs-number\">30<\/span>\r\n        };\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u5e8f\u5217\u5316\u5bf9\u8c61<\/span>\r\n        <span class=\"hljs-built_in\">byte<\/span>[] serializedData = SerializeObject(person);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u53cd\u5e8f\u5217\u5316\u5bf9\u8c61<\/span>\r\n        Person deserializedPerson = DeserializeObject&lt;Person&gt;(serializedData);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61\u7684\u5c5e\u6027\u503c<\/span>\r\n        Console.WriteLine(<span class=\"hljs-string\">$\"Name: <span class=\"hljs-subst\">{deserializedPerson.Name}<\/span>\"<\/span>);\r\n        Console.WriteLine(<span class=\"hljs-string\">$\"Age: <span class=\"hljs-subst\">{deserializedPerson.Age}<\/span>\"<\/span>);\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5e8f\u5217\u5316\u5bf9\u8c61<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">byte<\/span>[] <span class=\"hljs-title\">SerializeObject<\/span>&lt;<span class=\"hljs-title\">T<\/span>&gt;(<span class=\"hljs-params\">T obj<\/span>)<\/span>\r\n    {\r\n        BinaryFormatter formatter = <span class=\"hljs-keyword\">new<\/span> BinaryFormatter();\r\n        <span class=\"hljs-keyword\">using<\/span> (MemoryStream memoryStream = <span class=\"hljs-keyword\">new<\/span> MemoryStream())\r\n        {\r\n            formatter.Serialize(memoryStream, obj);\r\n            <span class=\"hljs-keyword\">return<\/span> memoryStream.ToArray();\r\n        }\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u53cd\u5e8f\u5217\u5316\u5bf9\u8c61<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> T <span class=\"hljs-title\">DeserializeObject<\/span>&lt;<span class=\"hljs-title\">T<\/span>&gt;(<span class=\"hljs-params\"><span class=\"hljs-built_in\">byte<\/span>[] data<\/span>)<\/span>\r\n    {\r\n        BinaryFormatter formatter = <span class=\"hljs-keyword\">new<\/span> BinaryFormatter();\r\n        <span class=\"hljs-keyword\">using<\/span> (MemoryStream memoryStream = <span class=\"hljs-keyword\">new<\/span> MemoryStream(data))\r\n        {\r\n            <span class=\"hljs-keyword\">return<\/span> (T)formatter.Deserialize(memoryStream);\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the given example, a serializable Person class is first defined. Next, a Person object is created in the Main method and serialized into a byte array. Then, the byte array is deserialized back into a Person object using the DeserializeObject method, and its property values are outputted.<\/p>\n<p>Please note that the above example uses the BinaryFormatter class for serialization and deserialization. Other serialization methods, such as XML serialization (XmlSerializer) or JSON serialization (Json.NET), can also be used to achieve serialization and deserialization.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, serialization and deserialization can be used to convert objects into byte streams or strings for transferring or storing data between different applications. To achieve serialization and deserialization, you need to use the relevant classes and interfaces in the System.Runtime.Serialization namespace. Below is a simple example demonstrating how to implement serialization and deserialization in [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[9823,19622,4148,6342,4150],"class_list":["post-14539","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-net-serialization","tag-c-data-management","tag-c-serialization","tag-deserialization","tag-object-serialization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C# Serialization and Deserialization Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Serialization and Deserialization Guide\" \/>\n<meta property=\"og:description\" content=\"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T09:28:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T10:05:04+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Carter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"C# Serialization and Deserialization Guide\",\"datePublished\":\"2024-03-15T09:28:09+00:00\",\"dateModified\":\"2025-08-06T10:05:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\"},\"wordCount\":185,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\".NET serialization\",\"C# data management\",\"C# serialization\",\"Deserialization\",\"object serialization\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\",\"name\":\"C# Serialization and Deserialization Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T09:28:09+00:00\",\"dateModified\":\"2025-08-06T10:05:04+00:00\",\"description\":\"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Serialization and Deserialization Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C# Serialization and Deserialization Guide - Blog - Silicon Cloud","description":"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/","og_locale":"en_US","og_type":"article","og_title":"C# Serialization and Deserialization Guide","og_description":"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T09:28:09+00:00","article_modified_time":"2025-08-06T10:05:04+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"C# Serialization and Deserialization Guide","datePublished":"2024-03-15T09:28:09+00:00","dateModified":"2025-08-06T10:05:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/"},"wordCount":185,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":[".NET serialization","C# data management","C# serialization","Deserialization","object serialization"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/","name":"C# Serialization and Deserialization Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T09:28:09+00:00","dateModified":"2025-08-06T10:05:04+00:00","description":"Learn how to serialize and deserialize objects in C#. Covers byte streams, data storage, and System.Runtime.Serialization with practical code examples.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-achieve-serialization-and-deserialization-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C# Serialization and Deserialization Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=14539"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14539\/revisions"}],"predecessor-version":[{"id":158571,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14539\/revisions\/158571"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=14539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=14539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=14539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}