带有[Serializable]的实体类是怎么回事?

时间:2021-01-25 17:31:59
比如:
[Serializable]
    public class admin_power
    {

        #region 构造函数

        ///<summary>
        ///权限功能表
        ///</summary>
        public admin_power()
        { }

        #endregion

        #region 公共属性

        ///<summary>
        ///系统编号
        ///</summary>
        public int admin_power_Id { get; set; }
        ///<summary>
        ///管理编号
        ///</summary>
        public int admin_Id { get; set; }
        ///<summary>
        ///页面标识
        ///</summary>
        public int admin_power_Page { get; set; }
        ///<summary>
        ///功能标识
        ///</summary>
        public string admin_power_Fuction { get; set; }

        ///<summary>
        ///权限功能表
        ///</summary>
        public admin_info admin_info { get; set; }

        #endregion

    }

而我平时都不写[Serializable]:

private int _ID;
public int ID
{
get{return _ID;}
set{_ID=value;}
}

有区别吗?确切的说[Serializable]是干吗的?

14 个解决方案

#1


查找C#序列化

#2


[Serializable]能带来什么好处啊 !?

#3


指定封装任何类型的可序列化数据对象的数据格式

#5


将实体对象序列化,对象是不允许在网络中传输的,只有将对象转化为流的格式才能在网络中传输,其实就是解决数据传输的问题

#6


表明可以序列化。

因为C#里面,因为对像是堆分配的,同一对像有可能被分割到了不同的空间。

序列化就表示,这个实体类要可以拼到一块地方,并可供传输。

#7


序列化
上网搜素一下就可以得到很多的资料
看看http://www.cnblogs.com/zhangzh/archive/2009/03/20/1417388.html

#8


也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?

#9


引用 8 楼 yasire 的回复:
也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?


不必要序列化的不必要用它来声明。你可以这么用。但要是类对像太大的话,那么不需要序列化,而刻意去序列化它的话,对内存管理的要求就比较高了。

#10


引用 8 楼 yasire 的回复:
也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?

只有需要传输或存储的对象才需要标记为可序列化...没有绝对的好坏,由需求决定...

#11


[Serializable]是按值来传递参数的,可以通过序列化的进程穿越.NET Remoting边界。序列化就是将对象的当前状态编码为位序列。一旦对象被序化,
.NET Remoting的基础设施就会穿越.NET Remoting边界将这个位序列传递到另一个应用程序域或上下文,在那里基础设施就会把这个位序列逆序列化为包含此专题原样副本的类实例。
在.NET中,如果使用Serializable属性声明类,此类型就是可序列化的。
不知道我答的对不对,要是错了请见谅,我就只知道这些。

#12


引用 6 楼 hikaliv 的回复:
表明可以序列化。 

因为C#里面,因为对像是堆分配的,同一对像有可能被分割到了不同的空间。 

序列化就表示,这个实体类要可以拼到一块地方,并可供传输。



很清楚了.....

写没写过WebService,这个里面的东西看看..........

#13


该回复于2009-06-04 11:52:37被版主删除

#14


该回复于2009-06-18 17:24:22被版主删除

#1


查找C#序列化

#2


[Serializable]能带来什么好处啊 !?

#3


指定封装任何类型的可序列化数据对象的数据格式

#4


#5


将实体对象序列化,对象是不允许在网络中传输的,只有将对象转化为流的格式才能在网络中传输,其实就是解决数据传输的问题

#6


表明可以序列化。

因为C#里面,因为对像是堆分配的,同一对像有可能被分割到了不同的空间。

序列化就表示,这个实体类要可以拼到一块地方,并可供传输。

#7


序列化
上网搜素一下就可以得到很多的资料
看看http://www.cnblogs.com/zhangzh/archive/2009/03/20/1417388.html

#8


也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?

#9


引用 8 楼 yasire 的回复:
也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?


不必要序列化的不必要用它来声明。你可以这么用。但要是类对像太大的话,那么不需要序列化,而刻意去序列化它的话,对内存管理的要求就比较高了。

#10


引用 8 楼 yasire 的回复:
也就是说用[Serializable]比较好了,我是不是也可以这么用?在别的地方要专门写与之对应的代码吗?

只有需要传输或存储的对象才需要标记为可序列化...没有绝对的好坏,由需求决定...

#11


[Serializable]是按值来传递参数的,可以通过序列化的进程穿越.NET Remoting边界。序列化就是将对象的当前状态编码为位序列。一旦对象被序化,
.NET Remoting的基础设施就会穿越.NET Remoting边界将这个位序列传递到另一个应用程序域或上下文,在那里基础设施就会把这个位序列逆序列化为包含此专题原样副本的类实例。
在.NET中,如果使用Serializable属性声明类,此类型就是可序列化的。
不知道我答的对不对,要是错了请见谅,我就只知道这些。

#12


引用 6 楼 hikaliv 的回复:
表明可以序列化。 

因为C#里面,因为对像是堆分配的,同一对像有可能被分割到了不同的空间。 

序列化就表示,这个实体类要可以拼到一块地方,并可供传输。



很清楚了.....

写没写过WebService,这个里面的东西看看..........

#13


该回复于2009-06-04 11:52:37被版主删除

#14


该回复于2009-06-18 17:24:22被版主删除