用ref或out参数编写铁python方法

时间:2010-05-18 12:41:13

标签: c# ironpython

我需要将以下C#方法转换为相同的IronPhyton方法

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

2 个答案:

答案 0 :(得分:5)

在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

答案 1 :(得分:1)

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

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

GetTP('theName', ter, prov)

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