我正在使用在我的 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 的唯一原因是避免使用数组时应该进行的迭代。但我在这里做错了什么?
答案 0 :(得分:2)
您可以随意使用 Linq 命名空间中提供的 IEnumerable 扩展。这只是一行简单的 min 代码和另一行 max
var minV = setValues.Min(x => x.Value);
var maxV = setValues.Max(x => x.Value);
但是,您无法避免对列表进行迭代。 Min 和 Max 扩展包含一个隐藏循环,用于寻找请求的值。
您的代码无法运行,因为 setValues 是 SetValues 对象的列表。仅仅因为大小写不同的字母就让我们感到困惑,但对于抱怨它的编译器来说,这是一个明显的错误。我建议为类找到一个不同的名称或为列表变量找到一个不同的名称