gpt4 book ai didi

c++-cli - 如何创建包含按值传递的 List(或类似)的 CLI 值类?

转载 作者:行者123 更新时间:2023-12-01 04:20:27 27 4
gpt4 key购买 nike

我们有一个 C++ 库,它使用一个包含结构体 STL 向量的结构体,如下所示:

struct Params
{
// values...
}

struct Settings
{
std::vector<Params> m_params;

// values...
}

我正在为库编写 CLI 包装器,并且我想要上述结构类型的等效项。我一直在考虑使用 List 作为向量的等价物,如下所示:
public value struct Params
{
// values...
}

public value struct Settings
{
List<Params>^ Params;

// values...
}

但由于 List 是一个引用类型,列表通过引用而不是值传递。有没有办法创建一个包含按值传递的列表(或类似)以及其他成员的 CLI 类?

最佳答案

我同意 mcdave 的回答,归结为不支持您所要求的内容。

我推测你的主要观点是不要得到实际按值传递,但更多以获得按值传递行为 .想想System.String .那不是真正的值类型,但是您可以安全地传递引用,因为字符串不能被修改,您只能创建新的。

要获得相同的列表,您可以制作 Params IList<Param> 类型的属性.赋值时,将内容复制到新的List<Param>中并存储 IList调用时获得的指针 AsReadOnly() .从现在开始,IList指向一个无法修改的对象。如果结构是按值传递的,指针将被复制,但没关系,因为它指向不可变的东西。如果您的对象被大量传递,它也会更快,因为不需要每次都进行深拷贝。

关于c++-cli - 如何创建包含按值传递的 List(或类似)的 CLI 值类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085337/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com