有没有办法检查数组是否存在或在特定元素中是否有值?
我有这行代码
if (rummen[positionX, positionY].Levandesaker[0].alive == true)
只要它存在,它就能正常工作。但我想做的是
if (rummen[positionX, positionY].Levandesaker != null)
{
if (rummen[positionX, positionY].Levandesaker[0].alive == true)
{
}
}
有没有人知道我之后会发生什么事情或能帮助我解决我想要的事情?
答案 0 :(得分:3)
if (rummen[positionX, positionY].Levandesaker != null &&
rummen[positionX, positionY].Levandesaker.Count > 0)
{
if (rummen[positionX, positionY].Levandesaker[0].alive == true)
{
}
}
我现在还不完全确定你在考虑哪个阵列。你指的是Levandesaker还是谣言?
答案 1 :(得分:3)
我希望我能正确解释这个问题!
数组的大小是常量,并且包含从0到数组上限的每个索引的值。
因此,要检查数组中的位置是否存在,您可以确保它小于上限。这样的事情应该涵盖绝对的每一个条件(假设谣言本身不是空的!):
// make sure rummen contains the [positionX, positionY] element
if(rummen.GetUpperBound(0) > positionX && rummen.GetUpperBound(1) > positionY)
{
if(rummen[positionX, positionY].Levandesaker != null)
{
// make sure Levandsaker contains at least one element
if(rummen[positionX, positionY].Levandsaker.Length > 0)
{
if(rummen[positionX, positionY].Levandesaker[0].alive == true)
{
}
}
}
}
编辑:抱歉,修复了C#特有的语法。还添加了Levandsaker的支票以供演示。
答案 2 :(得分:1)
如果要检查某些内容是否为数组,请检查数组类型:
if (rummen[positionX, positionY].Levandesaker is Array) { ... }
答案 3 :(得分:0)
数组方面并不重要(您的代码已经假定条目为非null)
我假设以下内容:
public class Rummen
{
public property Levandesaker { get; }
}
public class Levandesaker
{
public bool alive
}
允许你这样做:
public static bool LevandesakerExistsAndAlive(this Rummen r)
{
return (r.Levandesaker != null && r.Levandesaker.alive);
}
if (rummen[positionX, positionY].LevandesakerExistsAndAlive())
{
}
请注意,这假设您不控制Rummen类(否则您可以简单地将其设为实例方法或属性并使用它完成)