结构体是否可以序列化[关闭]

2024-01-28

我可以序列化一个struct直接输入,因为它是值类型。

我在课堂上使用过它,但想知道它是否可以单独用于结构。

e.g.

struct student
{
   name string; --string is a reference type
   age int;
   designation string; --string is a reference type
   salary double;
};

class foo
{
 foo(){
   student s;
   s.name = "example";

   serialize(s);
  }
}

This https://social.msdn.microsoft.com/Forums/vstudio/en-US/b479edea-cc9e-4755-9ef4-d54ece298306/can-a-struct-implement-iserializable-how-do-you-serialize-a-structs-private-members?forum=csharpgeneral链接说“我尝试让我的结构实现 ISerialized,但我无法实现所需的构造函数,因为这是一个结构而不是对象。”


是的你可以。我只是用下面的代码做到了这一点。

[Serializable]
public struct TestStruct
{
    public int Value1 { get; set; }
    public int Value2 { get; set; }
    public string Value3 { get; set; }
    public double Value4 { get; set; }
}

TestStruct s1 = new TestStruct();
s1.Value1 = 43265;
s1.Value2 = 2346;
s1.Value3 = "SE";

string serialized = jss.Serialize(s1);
s2 = jss.Deserialize<TestStruct>(serialized);
Console.WriteLine(serialized);
Console.WriteLine(s2.Value1 + " " + s2.Value2 + " " + s2.Value3 + " " + s2.Value4);

它做了什么?正是它应该有的,连载的 and 反序列化 the struct.

Output:

{"Value1":43265,"Value2":2346,"Value3":"SE","Value4":5235.3}
43265 2346 SE 5235.3

有趣的是,这就是TestStruct 连载的 and 反序列化至/自JSON.

怎么样一个默认构造函数? All struct对象有一个默认构造函数,它是其中之一基本属性 of a struct对象,并且该默认构造函数仅负责清除对象所需的内存struct反对默认值。因此,serializer 已经知道有一个默认构造函数,因此可以像常规对象一样继续进行(它是什么).

Notes:

本示例使用System.Web.Script.Serialization.JavaScriptSerializer.

这个例子假设所有的变量都在struct are 特性。如果不是,那么这个答案may不行。它似乎对我有用fields代替properties,但这不是最佳实践。您应该始终确保public所有对象中的变量都是properties.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构体是否可以序列化[关闭] 的相关文章

随机推荐

  • 获取与 XEP-0313 每次对话的最后一条消息?

    我正在使用一个 XMPP 服务器来实现XEP 0313 http xmpp org extensions xep 0313 html用于检索对话历史记录 我只想获取每个对话的最后一条消息 以便我可以构建您最近的对话列表 预览最后一条消息 我
  • CALL 命令与带 /WAIT 选项的 START 命令

    带有 WAIT 选项的 START 命令如何 START wait notepad exe START wait notepad exe 与使用 CALL 命令有什么不同吗 CALL notepad exe CALL notepad exe
  • 在 32 位 .NET 进程中分配超过 1,000 MB 的内存

    我想知道为什么我无法在 32 位 NET 进程中分配超过 1 000 MB 的内存 以下迷你应用程序在分配 1 000 MB 后抛出 OutOfMemoryException 为什么是 1 000 MB 而不是 1 8 GB 是否有我可以更
  • Java 中 JTable 的 JDBC TableModel?

    我想将数据库表显示为 JTable 我以前从未使用过 JTable 所以我用 google 搜索了 JTable 和 TableModel 通过谷歌搜索 我可以编写自己的自定义 TableModel 它显示存储在中的数据 Object da
  • 如何在 android 中使用 java 8 库?

    我正在尝试在我的 android 项目中使用一个使用 java 8 的库 我无法找到一种方法来完成这项工作 我尝试过使用复古 lambda 但没有帮助 我不断收到错误 com android dx cf iface ParseExcepti
  • acosf() 返回 NaN

    我有一个用 Objective C 编写的 iPhone 应用程序 我在其中收集用户在屏幕上绘制的触摸点以创建路径 我希望能够精简这些数据 我的目标之一是检查点的角度是否超过某个阈值 例如 如果我在名为 a b c 的线上取任意三个相邻点
  • AngularJS 路由参数可以包含任意字符

    我是 AngularJS 的新手 所以如果这是显而易见的 请原谅我 但我正在寻找可以回答这个棘手问题的人 我正在实现一个应用程序 需要将一些参数传递到特定视图以显示有关书籍的详细信息 基本上我希望能够使用以下路由表达式 bookApp co
  • 我想知道缩放和轨道运行出了什么问题

    我希望能够平移 缩放和绕立方体旋转 我想知道为什么立方体在屏幕上显示为完全缩放 以至于我必须向后移动才能查看整个立方体 我还想将缩放控件更改为 Alt 和鼠标右键以进行缩放和轨道旋转 但我无法让它工作 任何援助将不胜感激 header in
  • 无法将数据类型 nvarchar 转换为 float 时出错

    我搜索了这个很棒的论坛并用谷歌搜索 但无法解决这个问题 我们有两张桌子 相信我 我与这些桌子无关 两个表都有一个名为eventId 然而 在一张表中 数据类型为eventId is float在另一个表中 它是nvarchar 我们正在选择
  • VBA 尝试和捕获 (MS Outlook)

    我使用以下函数来监视公共 Outlook 文件夹是否有新电子邮件到达 Public Sub Application Startup Set NewMail Application GetNamespace MAPI Folders 3 Fo
  • 为什么 SVG 滚动性能比 PNG 差这么多?

    我正在开发的一个网站在滚动对话框窗口中显示大量 gt 50 复杂的 SVG 图像 在 Chrome 中查看网站时 对话框窗口的滚动性能非常差 明显滞后且缓慢 但是 如果我用 PNG 图像替换 SVG 图像 滚动将非常平滑且响应灵敏 这是差异
  • 在 Python 中绘制 3D 边界决策

    我正在尝试绘制 3D 决策边界 但它似乎并不像看起来那样工作 看看它是怎样的 我希望它像本例中那样显示 我不知道如何解释 但在上面的例子中 它实际上看起来像一堵 墙 这就是我想在我的代码中做的事情 然后按照我的代码 fig plt figu
  • Java发送midi消息到设备

    我有一个连接到树莓派的 APC40 MkII 在 pi 上 我正在运行 java 使用 java sound midi 包 我可以毫无问题地建立与 APC 的连接并接收其 midi 消息 但经过大量研究后 我仍然不明白如何向 APC 发送
  • Webactivator 无法在 IIS 7 上运行

    我有几个使用 WebActivator 来使用包的 Web 应用程序 在装有 IIS 7 5 Express 的本地计算机上 无论我在发布配置还是调试配置中进行测试 一切都正常 但是 在装有 IIS 7 5 的生产计算机上 WebActiv
  • 如何使用 jQuery 将文本添加到特定的 div 元素?

    我在使用 jquery 时遇到了问题 我的 HTML 是 div span class test span div div span class test span div 现在我尝试使用 Jquery 在 span 中添加文本 j spa
  • PostgreSQL 数据库服务

    我从他们的网站下载了 PostgreSQL http www postgresql org download windows http www postgresql org download windows 但是 我无法从中创建数据库pgA
  • MySQL:更新语句中等号冒号 =: 是什么意思?

    我遇到了以下 MySQL 查询 update table set itemId itemId startDate startDate where id id 但是我无法弄清楚 是什么意思 我认为 后面的名称是一个变量 但是如何检查里面有什么
  • Maven 替换器:替换值包含美元符号

    我正在处理一个 Maven 脚本 我必须修改一些文件内容 我目前正在使用替换插件 当替换值包含美元符号时 这会给我带来麻烦 我遇到问题的替换相对简单 在我的 log4j xml 中 替换该行
  • Kubernetes PVC删除POD的内容

    我有一个正在运行的 Kubernetes POD 并且已将 PVC 附加到它 PVC 卷为 opt stackstorm 默认情况下 opt stackstorm 中有一些文件 它们是 docker 官方镜像的一部分 当没有 PVC 连接到
  • 结构体是否可以序列化[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我可以序列化一个struct直接输入 因为它是值类型 我在课堂上使用过它 但想知道它是否可以单独用于结构 e g str