繁体   English   中英

如何检查对象是否是对象[0]?

[英]how to check if an object is object[0]?

在调试模式下,我将鼠标悬停在我的变量上,它显示它是{object[0]}

在此处输入图片说明

但是,这个 IF 语句永远不会被触发。

如何检查此 object[0] 类型?

要检查object是否为object[] ,您的检查element is object[]已经正确。

要检查object[]是否为空,调用Any()已经是正确的,但请确保在正确的实例上调用它。 避免使用ToEnumerable()扩展方法,因为它没有做您希望的事情。

if (element is object[] && !((object[]) element).Any())
    // element is an empty array of objects

测试:

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tester {
    static class Program {
        static void Test(string name, object element) {
            Console.Write($"{name}: ");
            Console.WriteLine(element is object[] && !((object[])element).Any());
        }

        static void Main(string[] args) {
            Test("new object()",       new object());       // false
            Test("new { }",            new { });            // false
            Test("new object[0]",      new object[0]);      // true
            Test("new object[1]",      new object[1]);      // false

            Test("new List<object>()", new List<object>()); // false
            // Note: object[] o = new List<object>(); wouldn't be allowed.

            Test("new string[0]",      new string[0]);      // true
            // Note: object[] o = new string[0]; would be allowed.

            Test("new int[0]",         new int[0]);         // false
            // Note: object[] o = new int[0]; wouldn't be allowed.
        }
    }
}

这包括一些测试用例,它们可能表明您尝试进行的检查不是一个好主意,但也表明它提供了准确的结果。

没有object[0]类型。 它告诉你的是它是一个空的对象数组。

你有没有尝试过:

var test = element as IEnumerable;

If (test != null && test.Any())
{

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM