检查字符串数组的正确方法不为null

时间:2015-06-29 10:32:36

标签: c#

我有一个字符串数组,它总是给出字符串数组长度> 0.检查字符串数组是否为空的正确方法是什么。

string[] mystr = new string[0];
...
...
if (..) {
    mystr = string[] oldstrArray.Clone();
    }
...
...

if (mystr[0].Length != 0) {
//Always enters this loop even if mystr is not assigned in the above if condition
}

4 个答案:

答案 0 :(得分:4)

试试这段代码:

private static void Main(string[] args)
{
    string[] mystr = null;
    if (IsNullOrEmpty(mystr))
    {
         //Do your thing
    }            
}

static bool IsNullOrEmpty(string[] strarray)
{
    return strarray== null || strarray.Length == 0;
}

或者这个(扩展方法)

class MyAwesomeProgram
{
    private static void Main(string[] args)
    {
        string[] mystr = null;
        if (mystr.IsNullOrEmpty())
        {
            //Do what you want
        }
    }
}

static class Extensions
{
    public static bool IsNullOrEmpty(this string[] strarray)
    {
        return strarray == null || strarray.Length == 0;
    }
}

答案 1 :(得分:3)

您要求数组中第一个字符串的长度,而不是数组本身。您想要检查mystr.Length而不是mystr[0].Length

另外,请注意您发布的代码 - 它应该编译(LINQPad对此非常有用)。你的语法错误,可能会妨碍人们试图帮助你。

答案 2 :(得分:1)

string[] mystr = new string[] { "", null, "", "", null };

//Check if the array itself is null which is what your question is truly asking
if (mystr == null) 
    Console.WriteLine("Array is null");

//Check to see if the array itself is empty/zero-length
if (mystr != null && mystr.Length == 0) 
    Console.WriteLine("Array contains no elements");

//Check if all elements are null or empty
if (mystr != null && mystr.All(s => string.IsNullOrEmpty(s))) 
    Console.WriteLine("All elements are either null or empty");

答案 3 :(得分:0)

  

if(mystr [0] .Length!= 0)

它将为您提供数组第一个成员的长度。空检查很简单

if(mystr == null)

Length属性为您提供数组的大小。长度可用于检查空数组