如何检查一个对象是否是对象[0]?
how to check if an object is object[0]?
在调试模式下,我将鼠标悬停在我的变量上,它显示它是 {object[0]}:
但是,此 IF 语句永远不会被触发。
如何检查此对象[0]类型?
没有object[0]
类型。它告诉你的是它是一个空的对象数组。
你试过了吗:
var test = element as IEnumerable;
If (test != null && test.Any())
{
要检查 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]}:
但是,此 IF 语句永远不会被触发。
如何检查此对象[0]类型?
没有object[0]
类型。它告诉你的是它是一个空的对象数组。
你试过了吗:
var test = element as IEnumerable;
If (test != null && test.Any())
{
要检查 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.
}
}
}
这包括一些测试用例,这些用例可能表明您尝试进行的检查不是一个好主意,但它也表明它提供了准确的结果。