如何检查C#中是否存在数组?

时间:2009-02-24 20:15:39

标签: c# arrays

有没有办法检查数组是否存在或在特定元素中是否有值?

我有这行代码

if (rummen[positionX, positionY].Levandesaker[0].alive == true)

只要它存在,它就能正常工作。但我想做的是

if (rummen[positionX, positionY].Levandesaker != null)
{
    if (rummen[positionX, positionY].Levandesaker[0].alive == true)
    {
    }
}

有没有人知道我之后会发生什么事情或能帮助我解决我想要的事情?

4 个答案:

答案 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类(否则您可以简单地将其设为实例方法或属性并使用它完成)