C#泛型多重制约 [英] C# Multiple generic constraints

查看:103
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆