C#泛型多重制约 [英] C# Multiple generic constraints
本文介绍了C#泛型多重制约的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道是否有可能添加多个泛型约束?
I was wondering if it is possible to add multiple generic constraints?
我有一个Add方法接受一个对象(无论是电子邮件,电话或地址),所以我的想法是这样的:
I have an Add method that takes an Object (Either Email, Phone or Address), so i was thinking something like:
public void Add<T>(T Obj)
where T : Address
where T : Email
where T : Phone
{
if (Obj is Address)
m_Address.Add(Obj as Address);
else if (Obj is Email)
m_Email.Add(Obj as Email);
else
m_Phone.Add(Obj as Phone);
}
不过,我不断收到:
But I keep getting:
约束条款已经为类型参数'T'。规定所有类型参数的约束必须在一个指定where子句。
推荐答案
您不能这样做。为什么不只是有三种方法,让编译器做艰苦的工作适合你?
You can't do that. Why not just have three methods and let the compiler do the hard work for you?
public void Add(Address address) { m_Address.Add(address); }
public void Add(Email email) { m_Email.Add(email); }
public void Add(Phone phone) { m_Phone.Add(phone); }
这篇关于C#泛型多重制约的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文