c# - 将 C++ 转换为 C#

标签 c# c++

我有 2 个 C++ 函数需要转换为 C#。以下是功能的详细信息

C++

void MyClass::GetArg(string argument, int minError, string* arg1, string* arg2, 
string* arg3, string* arg4, string* arg5)
{
      if(arg1 != null) *arg1 = GetArg(argument, 1, minError)
      if(arg2 != null) *arg2 = GetArg(argument, 2, minError)
      if(arg3 != null) *arg3 = GetArg(argument, 3, minError)
      if(arg4 != null) *arg4 = GetArg(argument, 4, minError)
      if(arg5 != null) *arg5 = GetArg(argument, 5, minError) 
}

string MyClass::GetArg(string argument, int argNum, int minError)
{
     //Whatever logic
}

我看到函数调用为

GetArg(argString, 3, &v1, &v2, &v3);

我的问题是,我没有看到任何带有 5 个参数的重载函数。那些额外的参数,arg4 和 arg5 是可选的吗?

我在 C# 中创建了一个类似的函数,如下所示

public string GetArg(string argument, int argNum, int minError)
{
     //Logic goes here
}

我已将 GetArg(argString, 3, &v1, &v2, &v3) 转换为 3 个单独的函数调用,如下所示

string v1 = GetArg(argString, 1, 3);
string v2 = GetArg(argString, 2, 3);
string v3 = GetArg(argString, 3, 3);

我不确定上述转换的影响是什么,因为我对 C++ 的了解非常少。如果有人能告诉我更好的转换方法,我将不胜感激。

最佳答案

您的 C++ 代码无法编译。在 C++ 中所有参数都是必需的,除非您特别将它们设为可选(通过使用 = default)或使用 C 遗留下来的可变参数机制

因此,不可能让 C# 做同样的事情,因为您发布的代码在 C++ 中是非法的。

关于c# - 将 C++ 转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7508441/

相关文章:

c++ - 确保可变参数模板不包含重复项

c++ - 类同时拥有和共享一个对象

c# - html 标签内的正则表达式匹配

C# SqlReader 问题

C++可视化变量的内存

c++ - 上课需要内存吗?

c++ - 我是C++编程的新手,这些代码之间有什么区别,应该使用哪个代码?

c# - 为什么 StringComparison.InvariantCultureIgnoreCase 不适用于此 Db4o linq 查询?

c# - 使用 IExcelDataReader 从 excel 中获取正确的文本显示

c# - 在控制台应用程序中使用 NAudio 录制麦克风音频