我在SetValues列表中添加了两个变量。变量是位置和值。现在,我要在列表中检查什么是最大值和什么是最小值(仅适用于“值”)。现在,当我执行以下操作时:
[Serializable]
public struct SetValues {
public float Position;
public float Value;
}
public List<SetValues> setValues;
void Start () {
Debug.Log (setValues.Value.Min ());
}
它说:“不包含'Value'的定义,找不到可以接受的扩展方法'Value',它接受类型的第一个参数。” 我要使用List的唯一原因是避免使用数组时应进行的迭代。但是我在这里做什么错?
您可以随意使用Linq名称空间中提供的IEnumerable扩展。这只是min的简单代码行,max的另一行代码
var minV = setValues.Min(x => x.Value);
var maxV = setValues.Max(x => x.Value);
但是,您无法避免在列表上进行迭代。“最小”和“最大”扩展包含一个隐藏的循环,该循环查找请求的值。
您的代码无法正常工作,因为setValues是SetValues对象的列表。只是大小写不同,这使我们感到困惑,但是对于抱怨它的编译器来说,这是一个明显的错误。我建议为该类找到一个不同的名称,或者为列表变量找到一个不同的名称
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句