dart - Dart中的memcpy等效项

标签 dart memcpy

Dart是否提供任何形式的类似于memcpy的功能?我想将一个对象的数据复制到另一个对象的地址:

var foo = Foo("hi");
var bar = Foo("hello");

memcpy(&foo, &bar, sizeof(Foo)); 

最佳答案

没有。

Dart不允许您如此访问内存,并且在没有类协作的情况下,它无法浅拷贝对象。

如果要复制对象,则必须使用构造函数创建一个新对象,并将其填写在字段中。 Dart构造函数可以执行任何操作,并且某些类的构建方式依赖于它们维护某种一致的全局状态的构造函数。例如,一个类可以通过使用final int id = _staticCounter++;初始化一个字段来为其对象分配连续的ID。复制该对象将打破所有对象具有不同ID的不变性。

尚无浅拷贝的解决方法。

对于深拷贝,有一种解决方法。如果您的平台支持dart:isolate,则可以向您自己发送一个对象:

import "dart:mirrors";
Future<T> clone<T>(T value) {
  return (ReceivePort()..sendPort.send(value)).first;
}

并非所有值都可以通过发送端口发送。并非所有类对于非使用构造函数创建的对象都能正常工作。

关于dart - Dart中的memcpy等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61863813/

相关文章:

c - 如何复制结构?

c - 使用 OpenMP 并行化 memcpy

optimization - 为什么 memset 很慢?

flutter - 使用 AuthController 传递用户 ID

android - Flutter-延迟监听器后如何检查值?

routing - Dart 多服务器中的端口转发请求//隔离处理程序

c - memset 无法正常工作

c - memcpy 性能与字节移位

mobile - 如何发出经过身份验证的 http 请求并返回带有 dart 的对象流?

dart - 如何将任意数据从Dart polymer Web组件传递到Click事件处理函数