[英]how to check if an object is 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.