Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:有没有办法确定元素范围是否为空?_C#_Arrays - Fatal编程技术网

C#:有没有办法确定元素范围是否为空?

C#:有没有办法确定元素范围是否为空?,c#,arrays,C#,Arrays,我想知道是否有一种方法可以确定某个数组元素范围是否为空。例如,如果数组是用10个值为“”的元素初始化的,那么如果数据后来分配给元素5、7、9;我可以测试元素0-3是空的,还是包含空字符串“” 因此,如果您试图检查元素0-3: array.Skip(0).Take(4).All(x => string.IsNullOrEmpty(x)); 为了清楚起见,我把Skip放在那里了 编辑:根据乔纳森在另一个答案中的评论(现在是我的Guffa评论),将其改为采用(4) 编辑2:根据下面的评论,OP

我想知道是否有一种方法可以确定某个数组元素范围是否为空。例如,如果数组是用10个值为“”的元素初始化的,那么如果数据后来分配给元素5、7、9;我可以测试元素0-3是空的,还是包含空字符串“”

因此,如果您试图检查元素0-3:

array.Skip(0).Take(4).All(x => string.IsNullOrEmpty(x));
为了清楚起见,我把
Skip
放在那里了

编辑:根据乔纳森在另一个答案中的评论(现在是我的Guffa评论),将其改为
采用(4)

编辑2:根据下面的评论,OP希望查看是否有任何元素匹配:

array.Skip(0).Take(4).Any(x => string.IsNullOrEmpty(x));

因此,将
All
更改为
Any

创建此扩展类,您可以从任何字符串数组调用它:

bool is0to3empty = myArrayOfString.Skip(0).Take(4).All(i => string.IsNullOrEmpty(i));
    public static class IsEmptyInRangeExtension
    {
        public static bool IsEmptyInRange(this IEnumerable<string> strings, int startIndex, int endIndex)
        {
            return strings.Skip(startIndex).TakeWhile((x, index) => string.IsNullOrEmpty(x) && index <= endIndex).Count() > 0;
        }

    }
公共静态类IsEmptyRangeExtension
{
公共静态bool IsEmptyRange(此IEnumerable字符串、int startIndex、int endIndex)
{
返回strings.Skip(startIndex).TakeWhile((x,index)=>string.IsNullOrEmpty(x)和索引0;
}
}

最直接、最有效的方法是简单地在阵列的该部分循环:

bool empty = true;..
for (int i = 0; i <= 3; i++) {
  if (!String.IsNullOrEmpty(theArray[i])) {
    empty = false;
    break;
  }
}
if (empty) {
  // items 0..3 are empty
}

你不能简单地用10个空字符串而不是10个空字符串来启动数组吗?(“”!=null)我在这方面的第一次尝试是执行类似if(array.IndexOf(array,“”)的操作这只是看看前四个元素中是否有一个空白条目。看起来有点笨重。这只检查元素0-2。好的,我认为这是有意义的。但这不只是检查整个范围是否为空白吗?我想我应该更具体一些。基本上我要做的是确定该范围内的任何元素是否为空塔纳blank@Sinaesthetic,修改了答案,但使用
Any
运算符而不是
All
@Jonathan是的,但我认为这里的问题不是确切的数字。我担心有人会看到Take(3),并认为它意味着“将所有元素索引到3”。
bool empty = true;..
for (int i = 0; i <= 3; i++) {
  if (!String.IsNullOrEmpty(theArray[i])) {
    empty = false;
    break;
  }
}
if (empty) {
  // items 0..3 are empty
}
bool empty = theArray.Take(4).All(String.IsNullOrEmpty);