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 Newtonsoft.Json.Utilities.LinqBridge;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace Newtonsoft.Json.Linq
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public readonly struct JEnumerable<[System.Runtime.CompilerServices.Nullable(0)] T> : IJEnumerable<T>, IEnumerable<T>, IEnumerable, IEquatable<JEnumerable<T>> where T : JToken
{
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
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()
{
return ((IEnumerable<T>)(_enumerable ?? ((object)Empty))).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public bool Equals([System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})] JEnumerable<T> other)
{
return object.Equals(_enumerable, other._enumerable);
}
[System.Runtime.CompilerServices.NullableContext(2)]
public override bool Equals(object obj)
{
if (obj is JEnumerable<T>) {
JEnumerable<T> other = (JEnumerable<T>)obj;
return Equals(other);
}
return false;
}
public override int GetHashCode()
{
if (_enumerable == null)
return 0;
return _enumerable.GetHashCode();
}
}
}