加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 类型参数约束是一个类

发布时间:2020-12-16 00:03:21 所属栏目:百科 来源:网络整理
导读:我注意到其他开发人员使用这种技术,但它总是让我困惑.我今天早上决定进行调查,并在MSDN上发现了以下内容(从 http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.100).aspx开始): public class GenericListT where T : Employee{...} 为什么我们要使用
我注意到其他开发人员使用这种技术,但它总是让我困惑.我今天早上决定进行调查,并在MSDN上发现了以下内容(从 http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.100).aspx开始):

public class GenericList<T> where T : Employee
{
...
}

为什么我们要使用此方法而不是在类中用Employee替换T的所有实例?对我来说,这似乎是可维护性的胜利.我可以理解限制接口作为包含来自不同继承层次结构的类的方法,但是继承已经以更明显的方式解决了上面的问题,不是吗?

这可能被视为一个错误,或者“修复”这样的代码是错误的吗?

解决方法

因为它可能是从Employee派生的东西.

public class EvilEmployee : Employee {
    public Int32 Evilness { get; set; }
}

现在可以……

GenericList<EvilEmployee> list = GetEvilEmployees();
var mostEvilEmployee = list.OrderByDescending(e => e.Evilness).First();

因为在编译时我们知道T = EvilEmployee并且EvilEmployee具有Evilness属性,所以这是可能的.如果我们要将列表强制转换为不可能的Employee列表(不使用OfType).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读