使用引用或输出参数编写Iron Python方法

8

我需要将以下C#方法翻译成相同的IronPython方法:

private void GetTP(string name, out string ter, out int prov)
{
  ter = 2;
  prov = 1;
}
2个回答

6

在Python中(因此也包括IronPython),您无法更改非可变参数的值(例如字符串)。

因此,您无法直接将给定的代码翻译成Python,但必须执行类似以下操作:

def GetTP(name):
  return tuple([2, 1])

当你调用它时,你必须执行以下操作:

retTuple = GetTP(name)
ter = retTuple[0]
prov = retTuple[1]

当在IronPython中调用包含out/ref参数的C#方法时,行为是相同的。

事实上,在这种情况下,IronPython返回一个包含out/ref参数的元组,如果有返回值,则是元组中的第一个。

编辑: 实际上,可以重写具有out/ref参数的方法,请参见此处:

http://ironpython.net/documentation/dotnet/dotnet.html#methods-with-ref-or-out-parameters


我想尽可能简单地解释问题,这就是为什么我使用了那个示例方法。真正的问题是这个方法覆盖了基类中的方法,我必须在IronPhyton中提供相同的签名来覆盖基本方法。我尝试了你的方法,但没有帮助... - aron

2

像这样的Python脚本应该可以工作:

ter = clr.Reference[System.String]()
prov = clr.Reference[System.Int32]()

GetTP('theName', ter, prov)

print(ter.Value)
print(prov.Value)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接