91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 序列化、反序列化

發布時間:2020-06-26 14:56:22 來源:網絡 閱讀:458 作者:guwei4037 欄目:編程語言

剛剛碰巧群里有人問這個問題,而之前的博客中并沒有提及,打算弄一篇博客簡單提及一下這個知識點。

MSDN文檔中提及了序列化、反序列化的概念,這里引用一下。

序列化:將對象狀態轉換為可保持或傳輸的形式的過程。

反序列化:是序列化的逆過程,就是將流轉換為對象的過程。

這兩個過程一起保證數據易于傳輸和存儲。

詳細的請參考:http://msdn.microsoft.com/zh-cn/library/7ay27kt9(v=vs.100).aspx。


下面直接給出完整的代碼,該代碼演示了如何序列化一個對象以及反序列化(還原對象)的過程。

namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Object student = new Student() { StudentID = "007", StudentName = "guwei4037" };  
  
            string result = ObjectToString<Object>(student);  
            Console.WriteLine(result + "\r\n");  
  
            Student newResult = StringToObject<Student>(result);  
            Console.WriteLine("ID:{0}, Name:{1}", newResult.StudentID, newResult.StudentName);  
        }  
  
        /// <summary>  
        /// 對象轉字符串(序列化后轉Base64編碼字符串)  
        /// </summary>  
        /// <param name="obj">對象</param>  
        /// <returns>字符串</returns>  
        public static string ObjectToString<T>(T obj)  
        {  
            using (MemoryStream stream = new MemoryStream())  
            {  
                IFormatter formatter = new BinaryFormatter();  
                formatter.Serialize(stream, obj);  
                stream.Position = 0;  
                byte[] buffer = new byte[stream.Length];  
                stream.Read(buffer, 0, buffer.Length);  
                return Convert.ToBase64String(buffer);  
            }  
        }  
  
        /// <summary>  
        /// 字符串轉對象(Base64編碼字符串反序列化為對象)  
        /// </summary>  
        /// <param name="str">字符串</param>  
        /// <returns>對象</returns>  
        public static T StringToObject<T>(string str)  
        {  
            using (MemoryStream stream = new MemoryStream())  
            {  
                byte[] bytes = Convert.FromBase64String(str);  
                stream.Write(bytes, 0, bytes.Length);  
                stream.Position = 0;  
                IFormatter formatter = new BinaryFormatter();  
                return (T)formatter.Deserialize(stream);  
            }  
        }  
    }  
  
    /// <summary>  
    /// 可序列化的類,用Serializable標示此類可序列化  
    /// </summary>  
    [Serializable]  
    public class Student  
    {  
        public string StudentID { get; set; }  
        public string StudentName { get; set; }  
    }  
}

運行結果截圖:

C# 序列化、反序列化


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳普湖县| 元朗区| 襄城县| 栾城县| 香河县| 桐乡市| 叶城县| 丘北县| 隆林| 广元市| 壶关县| 万全县| 永新县| 榆林市| 新蔡县| 蓬安县| 德兴市| 会同县| 酉阳| 启东市| 河源市| 琼海市| 江北区| 札达县| 榕江县| 莆田市| 崇阳县| 阿拉善左旗| 鄄城县| 城市| 利川市| 宣城市| 伊宁县| 孝感市| 新和县| 靖安县| 渝中区| 集贤县| 镇平县| 台江县| 大兴区|