首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

打造可逆向排序的泛型字典類 (七 續):IDictionary 顯式實作細節與驗證邏輯

     編輯:關於C語言

ICollection 顯式屬性


bool ICollection.IsSynchronized => false;
object ICollection.SyncRoot => this;

IDictionary 顯式屬性


bool IDictionary.IsFixedSize => false;
bool IDictionary.IsReadOnly => false;

object IDictionary.this[object key]
{
    get
    {
        if (IsCompatibleKey(key))
        {
            int idx = IndexOfKey((TKey)key);
            if (idx >= 0) return values[idx];
        }
        return null;
    }
    set
    {
        VerifyKey(key); VerifyValueType(value);
        // this[(TKey)key] = (TValue)value; // 待泛型索引器實作後啟用
    }
}

ICollection IDictionary.Keys => GetKeyListHelper();
ICollection IDictionary.Values => GetValueListHelper();

IDictionary 顯式方法


void IDictionary.Add(object key, object value)
{ VerifyKey(key); VerifyValueType(value); Add((TKey)key, (TValue)value); }

bool IDictionary.Contains(object key)
=> IsCompatibleKey(key) && ContainsKey((TKey)key);

IDictionaryEnumerator IDictionary.GetEnumerator()
=> new Enumerator<TKey, TValue>(this);

void IDictionary.Remove(object key)
{
    if (IsCompatibleKey(key)) 
    { /* this.Remove((TKey)key); 待實作 */ }
}

VerifyValueType 中的 (value != null || typeof(TValue).IsValueType) 判斷針對 Nullable<T> 設計:允許值型別為 null。此節完成非泛型介面骨架,銜接泛型介面實作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved