JEnumerable<T>
public struct JEnumerable<T> : IJEnumerable<T>, IEnumerable<T>, IEnumerable, IEquatable<JEnumerable<T>> where T : JToken
Represents a collection of JToken objects.
using Newtonsoft.Json.Utilities;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace Newtonsoft.Json.Linq
{
public struct JEnumerable<T> : IJEnumerable<T>, IEnumerable<T>, IEnumerable, IEquatable<JEnumerable<T>> where T : JToken
{
public static readonly JEnumerable<T> Empty = new JEnumerable<T>(Enumerable.Empty<T>());
private readonly IEnumerable<T> _enumerable;
public IJEnumerable<JToken> this[object key] {
get {
if (_enumerable == null)
return JEnumerable<JToken>.Empty;
return new JEnumerable<JToken>(Extensions.Values<T, JToken>(_enumerable, key));
}
}
public JEnumerable(IEnumerable<T> enumerable)
{
ValidationUtils.ArgumentNotNull(enumerable, "enumerable");
_enumerable = enumerable;
}
public IEnumerator<T> GetEnumerator()
{
if (_enumerable == null)
return Empty.GetEnumerator();
return _enumerable.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public bool Equals(JEnumerable<T> other)
{
return object.Equals(_enumerable, other._enumerable);
}
public override bool Equals(object obj)
{
if (obj is JEnumerable<T>)
return Equals((JEnumerable<T>)obj);
return false;
}
public override int GetHashCode()
{
if (_enumerable == null)
return 0;
return _enumerable.GetHashCode();
}
}
}