首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么进程内存查看器要将字节数组读取到字符串?

为什么进程内存查看器要将字节数组读取到字符串?
EN

Stack Overflow用户
提问于 2015-02-14 19:13:45
回答 1查看 173关注 0票数 0

我有两个c#应用程序,它们通过netPipe WCF相互通信。一个应用程序向另一个应用程序发送一个字节数组。如果我使用进程内存查看器(如CheatEngine)检查接收应用程序的内存映射,则可以将接收到的字节数组作为字符串读取。为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-14 19:37:27

答案很简单,数组自然是一种引用类型,为什么?因为它不能在内存中有一个值,同时它指向许多不同的内存位置,每个位置都有一个特定的值。这就是为什么它应该是一个引用类型。因此,不能将对象(Array)直接从一台计算机传递到另一台计算机。那会发生什么呢?与对象相关的所有值都必须从内存中获取,并且它们必须“序列化”,以便当接收方接收到对象时,可以将其转换为原始形式。这被称为反序列化。序列化和反序列化数据有许多不同的方法,例如将对象转换为XML或JSON,或者执行二进制序列化(与您所做的非常相似),我指的是通信字节数组。

为了更详细地解释一下下面的模型:

代码语言:javascript
复制
public class MyModel{
   public string Name{get; set;}
   public string Email{get; set;}
}

如果您想要沟通:

代码语言:javascript
复制
MyModel Model = new MyModel{ Name ="Jack", Email = "Gmail"};

此对象将被转换为如下所示:

代码语言:javascript
复制
<MyModel>
   <Name>Jack</Name>
   <Email>Gmail</Email>
</MyModel>

这样,它就可以通过,当它被收到时,它将被转换回原来的形式。然而,MyModel类的迷雾在两边都是可用的,所以我的建议是将这些类型保存在dll文件中,以允许重用。你想知道更多,让我知道更多的细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28519230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档