gpt4 book ai didi

c# - 如何在 C# 中返回对字符串的引用?

转载 作者:太空狗 更新时间:2023-10-30 00:47:36 25 4
gpt4 key购买 nike

我想写一个像

这样的函数
ref String TestIt( int index )
{
return this.TestArray[index];
};

这样我就可以编写如下代码:

MyClass.TestIt(0) = "Hello World";

我的目标是模仿这个 c++ 声明

CString& MyClass::Data( UINT index);

通过引用,我指的是 C++ 术语变量的地址。
换句话说,在我调用 TestIT(0) 之后TestArray[0] 将包含“Hello World”。

编辑我不能使用索引器,因为我的目标是持续将 .cpp 文件转换为 c#。我越能模仿这个 C++ 代码,我需要编写的转换器就越少。

最佳答案

为此,您需要编写一个 setter 属性。遗憾的是,setter 无法在 C# 中接受更多参数,因此您无法在 C# 中 1:1 编写此代码。您可以获得的最接近的是具有默认属性的嵌套类:

class YourClass {
public class Nested {
public Nested(YourClass outer) { m_RefToOuterWorld = outer; }
private readonly YourClass m_RefToOuterWorld;

public string this[int index] {
get { return m_RefToOuter.TestArray[index];
set { m_RefToOuter.TestArray[index] = value; }
}
}

private readonly Nested m_Nested;
private string[] TestArray = new string[10];

public YourClass() { m_Nested = new Nested(this); }

public Nested TestIt { get { return m_Nested; } }
}

你可以这样使用它:

var test = new YourClass();
test.TestIt[2] = "Hello world!";

顺便说一下,由于这是一项非常大的工作量,您可能不想这样做。此外,它感觉不是很 C#-y。此处嵌套类的无用间接操作不是您经常看到的。

关于c# - 如何在 C# 中返回对字符串的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/296913/

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