如何在不初始化对象的情况下构造它? (。网)
当您在 C# 中新建一个对象时,必须发生一些事情:
- 创建该对象的内存,并且将其他簿记 CLR 要做的
- 字段初始化为默认值,
- 调用构造函数
序列化框架似乎有一些神奇的方法可以做到这一点1 而不执行 2 和 3。或者也许它根本没有那么神奇。如果您正在编写自己的反序列化代码,您将如何执行相同的操作(跳过 2 和 3)?
When you new an object in C# a few things must happen:
- memory for the object is created, and whatever other book-keeping CLR whats to do
- fields are initialized to default values
- the constructor is invoked
Serialization frameworks seem to have some magical way to do 1 without doing 2 and 3. Or maybe it's not so magical after all. How would you do the same (skip 2 and 3) if you are writing your own deserialization code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
二进制格式化程序使用 FormatterServices 的方法,例如获取UninitializedObject。
Binary formatter uses methods of FormatterServices, like GetUninitializedObject.