如果您要做的是获取一个小数列表并从每个小数中减去一个,从而改变列表,您可以这样做:
void MutateList(List<decimal> values)
{
for(int i = 0; i < values.Count; i += 1)
values[i] -= 1m;
}
如果您要做的是获取一个小数列表并返回一个不同的列表,其中新列表与旧列表相同,但每个元素都小一个,那就是:
List<decimal> NewList(List<decimal> values)
{
return values.Select(v => v - 1m).ToList();
}
如果由于某种原因您被脚本系统限制为签名:
void RunScript(object input, ref object output)
{
}
然后你做和以前完全一样的事情。如果你需要改变一个列表,你可以这样做:
void MutateList(List<decimal> values)
{
for(int i = 0; i < values.Count; i += 1)
values[i] -= 1m;
}
void RunScript(object input, ref object output)
{
MutateList((List<decimal>)input);
}
你尽可能地让自己处于理智类型的世界中。
同样,如果您需要返回一个新列表:
List<decimal> NewList(List<decimal> values)
{
return values.Select(v => v - 1m).ToList();
}
void RunScript(object input, ref object output)
{
output = NewList((List<decimal>)input);
}
尽可能保持静态类型,并编写合理、正常的 C# 代码。 只在需要使用奇怪界面的地方使用奇怪的界面。其他任何地方都应该是普通的静态类型的 C# 代码。