gpt4 book ai didi

c# - 如果 List 中的值等于给定值,则设置 bool 值

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:42 25 4
gpt4 key购买 nike

下面的代码将根据 sList 中的最后一个 Items ID 返回 true 或 false。我对这一点感到困惑,我想知道是否有任何一个 sList[i].getID = 1 然后它会设置 bool value = true 但是如果 sList[i].getID = 0 下的所有值,那么它将设置 bool value = false。我觉得这是一个简单的答案,但我的大脑现在感觉很模糊。

public Class Data 
{
public struct Struct
{
public Struct(string s, bool b, Vector2 v, int i)
: this()
{
this.text = s;
this.tf = b;
this.ID = i
this.seg = v;
}

private String text { get; set; }
public String getText { get { return text; } }
private bool tf { get; set }
public bool getTF { get { return tf; } }
private Vector2 seg { get; set; }
public Vector2 getSeg { get { return seg; } }
private int ID { get; set; }
public int getID { get { return ID; } }
}
}

一些其他类:

List<Data.Struct> sList = new List<Class.Struct>();
bool value = false;

sList.Add(new Data.Struct("Hello", false, new Vector2(150, 150), 0));
sList.Add(new Data.Struct("Cruel", true, new Vector2(150, 150), 1));
sList.Add(new Data.Struct("World", true, new Vector2(150, 150), 0));

for(int i = 0; i < sList.Count; i++)
{
if(sList[i].getID == 1)
{
value = true;
}
else if(sList[i].getID == 0)
{
value = false;
}
}

最佳答案

使用for循环,需要先将标志设置为false,只有遇到1。目前,您在每次通过时都会覆盖您的值(value)。

value = false;
for (int i = 0; i < sList.Count; i++)
{
if (sList[i].getID == 1)
{
value = true;
}
}

这样,一旦它被设置为true,即使下面的任何值是0,它也不会重置为false.

您还可以在true 之后使用break 语句来缩短循环的执行时间。由于您确实没有很多数据,因此这完全取决于您的喜好。


作为更简洁的替代方法,您可以使用 LINQ 的 Any :

bool value = sList.Any(s => s.getID == 1);

这和它读起来差不多,如果列表中的任何值的 ID 等于 1,它将返回 true

你也可以使用不太干净的底片 All :

bool value = !sList.All(s => s.getID == 0);

那个是相反的,不太明显。

关于c# - 如果 List<Struct> 中的值等于给定值,则设置 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com