我有 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/