3 instantiations of ReferenceHolder
Microsoft.CodeAnalysis.Workspaces (3)
Utilities\ReferenceHolder`1.cs (3)
32=> new(value); 42return new ReferenceHolder<T>(new WeakReference<T>(value), ReferenceEqualityComparer.Instance.GetHashCode(value)); 101=> new(new WeakReference<T>(null!), hashCode);
11 references to ReferenceHolder
Microsoft.CodeAnalysis.Workspaces (11)
Utilities\ReferenceHolder`1.cs (8)
10internal readonly struct ReferenceHolder<T> : IEquatable<ReferenceHolder<T>> 31public static ReferenceHolder<T> Strong(T value) 34public static ReferenceHolder<T> Weak(T value) 55return obj is ReferenceHolder<T> other 59public bool Equals(ReferenceHolder<T> other) 96/// Creates a <see cref="ReferenceHolder{T}"/> for a weakly-held reference that has since been collected. 99/// <returns>A weak <see cref="ReferenceHolder{T}"/> which was already collected.</returns> 100public static ReferenceHolder<T> ReleasedWeak(int hashCode)
Utilities\WeakSet`1.cs (3)
16private readonly HashSet<ReferenceHolder<T>> _values = []; 27return _values.Add(ReferenceHolder<T>.Weak(value)); 32return _values.Contains(ReferenceHolder<T>.Strong(value));