Misc deduplication

This commit is contained in:
Łukasz Domeradzki
2024-08-18 01:53:13 +02:00
parent 06185d5f7d
commit 337b720d31
2 changed files with 10 additions and 38 deletions

View File

@@ -34,7 +34,6 @@ public sealed class ConcurrentList<T> : IList<T>, IReadOnlyList<T> where T : not
[PublicAPI]
public event EventHandler? OnModified;
[PublicAPI]
public int Count {
get {
using (Lock.ReaderLock()) {
@@ -48,9 +47,6 @@ public sealed class ConcurrentList<T> : IList<T>, IReadOnlyList<T> where T : not
private readonly List<T> BackingCollection;
private readonly AsyncReaderWriterLock Lock = new();
int ICollection<T>.Count => Count;
int IReadOnlyCollection<T>.Count => Count;
public T this[int index] {
get {
using (Lock.ReaderLock()) {

View File

@@ -35,7 +35,6 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
[PublicAPI]
public event EventHandler? OnModified;
[PublicAPI]
public int Count => BackingDictionary.Count;
[PublicAPI]
@@ -43,17 +42,13 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
public bool IsReadOnly => false;
[PublicAPI]
public ICollection<TKey> Keys => BackingDictionary.Keys;
public ICollection<TValue> Values => BackingDictionary.Values;
private readonly ConcurrentDictionary<TKey, TValue> BackingDictionary;
int ICollection<KeyValuePair<TKey, TValue>>.Count => BackingDictionary.Count;
int IReadOnlyCollection<KeyValuePair<TKey, TValue>>.Count => BackingDictionary.Count;
IEnumerable<TKey> IReadOnlyDictionary<TKey, TValue>.Keys => BackingDictionary.Keys;
ICollection<TKey> IDictionary<TKey, TValue>.Keys => BackingDictionary.Keys;
IEnumerable<TValue> IReadOnlyDictionary<TKey, TValue>.Values => BackingDictionary.Values;
ICollection<TValue> IDictionary<TKey, TValue>.Values => BackingDictionary.Values;
public TValue this[TKey key] {
get => BackingDictionary[key];
@@ -107,7 +102,7 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
}
public void Clear() {
if (BackingDictionary.IsEmpty) {
if (IsEmpty) {
return;
}
@@ -117,6 +112,12 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
public bool Contains(KeyValuePair<TKey, TValue> item) => ((ICollection<KeyValuePair<TKey, TValue>>) BackingDictionary).Contains(item);
public bool ContainsKey(TKey key) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.ContainsKey(key);
}
public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) {
ArgumentNullException.ThrowIfNull(array);
ArgumentOutOfRangeException.ThrowIfNegative(arrayIndex);
@@ -151,33 +152,15 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
return true;
}
bool IDictionary<TKey, TValue>.ContainsKey(TKey key) {
public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.ContainsKey(key);
}
bool IReadOnlyDictionary<TKey, TValue>.ContainsKey(TKey key) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.ContainsKey(key);
return BackingDictionary.TryGetValue(key, out value);
}
[MustDisposeResource]
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
bool IReadOnlyDictionary<TKey, TValue>.TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.TryGetValue(key, out value);
}
bool IDictionary<TKey, TValue>.TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.TryGetValue(key, out value);
}
[PublicAPI]
public bool TryAdd(TKey key, TValue value) {
ArgumentNullException.ThrowIfNull(key);
@@ -190,11 +173,4 @@ public sealed class ObservableConcurrentDictionary<TKey, TValue> : IDictionary<T
return true;
}
[PublicAPI]
public bool TryGetValue(TKey key, out TValue? value) {
ArgumentNullException.ThrowIfNull(key);
return BackingDictionary.TryGetValue(key, out value);
}
}