在IronPython中使用 .NET 值类型时,有一个众所周知的问题。最近,当我尝试在 C# 中使用 Python 作为嵌入式脚本语言时,这让我很头疼。问题可以总结如下:
给定一个 C# 结构,例如:
struct Vector {
public float x;
public float y;
}
还有一个 C# 类,例如:
class Object {
public Vector position;
}
IronPython 中会发生以下情况:
obj = Object()
print obj.position.x # prints ‘0’
obj.position.x = 1
print obj.position.x # still prints ‘0’
正如文章所述,这意味着值类型大多是不可变的。但是,这是一个问题,因为我正计划使用如上所示实现的向量库。是否有任何解决方法可以使用依赖于值类型的现有库?修改库将是最后的手段,但我宁愿避免这样做。