:オブジェクトがオブジェクト[0]かどうかをチェックする方法?デバッグモードでは、{[0]オブジェクト}</strong>私は私の変数の上に浮かんでいて、それが<strong>であることを示している
しかし、このIF文はトリガーなってされることはありません。
このオブジェクト[0]タイプを確認するにはどうすればよいですか?
:オブジェクトがオブジェクト[0]かどうかをチェックする方法?デバッグモードでは、{[0]オブジェクト}</strong>私は私の変数の上に浮かんでいて、それが<strong>であることを示している
しかし、このIF文はトリガーなってされることはありません。
このオブジェクト[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())
{
--''''''---------私が持っている、と要素にGUIDであれば、それはIEnumerableを –
@lであるように見えます「」「」「」「」「」「」いいえ、['Guid'](https://msdn.microsoft.com/en-us/library/system.guid(v = vs.110).aspx)は' IEnumerable'を実装していません。おそらくあなたはGuidを表すようになる['string'](https://msdn.microsoft.com/en-us/library/system.string(v = vs.110).aspx)を見ているでしょうか? 'string'は' IEnumerable'を実装します。 – hvd
正しい!それは文字列だった。 –
'オブジェクト[0]'言うのはそのハードその空のコレクションを意味するかもしれません。このオブジェクトはどこから来たのですか? –
element.GetType()。FullNameはこの場合に何を返しますか? – RQDQ
if文はあまり意味がないようです。この小切手を使用している理由を説明してください。 – Soviut