我有一个由混合 C++/CLI 和 C# 代码组成的大型应用程序。在重构过程中,我想在 C# 中创建一个接口(interface),该接口(interface)将在 C++/CLI 中继承。没问题,我过去已经这样做过很多次了。但我对这个新接口(interface)的方法签名有疑问。将从它继承的 C++ 类具有如下所示的方法。
void MethodName(DateTime ^A)
如果 DateTime 是 C# 中的引用类型,我可以用此替换上面的签名。
void MethodName(DateTime A)
问题的出现是因为 DateTime 是一种值类型。但是,它是通过句柄访问的。句柄是一个 C++/CLI 概念,我不知道如何将其转换为 C#。
谁能告诉我 C# 中需要什么方法签名来解决这个问题?
最佳答案
不存在与 C++/CLI 中的 DateTime^
直接等效的 C#。 C# 中不存在这种类型的参数。
ref DateTime
很接近,但在 C++/CLI 中将是 DateTime%
,而不是 DateTime^
。
如果您可以修改包含 DateTime^
的源代码,请将其更改为 DateTime
或 DateTime%
。原作者可能不知道 DateTime
不需要 ^
,因此他们可能将该参数用作常规按值参数,而不是引用。无论您以哪种方式更改它,都可以轻松地从 C# 调用它。
关于c# - 参数 DateTime ^A 的 C# 等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723791/