C# · 12月 27, 2021

c# – 测试对象是否为IEnumerable的最快方法是什么?

有一个快速的方法来确定对象变量的内容是否支持IEnumerable?具体来说,我正在使用System.Xml.XPath中的XPathEvaluate(),它可以返回“ An object that can contain a bool,a double,a string,or an IEnumerable.”

所以执行后:

XDocument content = XDocument.Load(“foo.xml”);object action = content.XPathEvaluate(“/bar/baz/@quux”);// Do I Now call action.ToString(),or foreach(var foo in action)?

我可以用action.GetType().GetInterface(),但我想我会问,是否有一个更快/更容易的方式.

解决方法 您正在寻找 is运算符: if(action is IEnumerable)

甚至更好,as操作符.

IEnumerable enumerable = (action as IEnumerable);if(enumerable != null){ foreach(var item in enumerable) { … }}