我想做一个像下面这样的函数。 K
和L
是泛型类型参数。 (这是在万一你不知道的MultiKeyDictionary by Aron Weiler定制)对值类型和引用类型使用不同的函数签名
protected void Dissociate(K primaryKey, L subKey)
{
primaryToSubkeyMapping.Remove(primaryKey??subDictionary[subKey]);
subDictionary.Remove(subKey??primaryToSubkeyMapping[primaryKey]);
}
每个参数是可选的,但至少一个必须存在; null
意味着缺席。问题是,如果泛型参数是一个值类型,我需要用Nullable
包装函数的参数,所以primaryKey??
是有效的和,所以我可以通过null
指定参数的缺席。但是,如果K
是引用类型,则Nullable<K>
也是无效的!
那么,我可以以某种方式编写实现,因此它对两种情况都有效吗?
请注意,我确实需要将值类型包装到'Nullable'中。我编辑了这个问题来强调这一点。 – 2014-11-08 10:48:46
你想让它们为空,并且同时传递引用类型?如果是这样,这是不可能的,为了使它们成为'Nullable',你必须添加'where T:struct'约束。 –
2014-11-08 10:50:55
那么,我可以制作两个方法实现,以便根据约束是否适用来使用适当的方法吗? – 2014-11-08 10:58:58