c# - 为什么我会使用仅限于单一类型的 where 约束?

标签 c#

所以我在这里查看 MSDN 示例:Constraints on Type Parameters (C# Programming Guide)第一个示例显示了以下定义 where 的泛型类具有单一具体类型的约束:Employee

public class GenericList<T> where T : Employee

现在使用 where约束 我完全理解在定义 > 1 类型时的用法, 最肯定的是在使用接口(interface)时。但是(我知道这只是一个例子),为什么我只想使用 where限制为单一具体类型的约束?我不能只替换下面的代码吗:

public T FindFirstOccurrence(string s)

由于只有一个单一约束,所以使用以下内容?

public Employee FindFirstOccurrence(string s)

我能看到使用单个 where 部署代码的唯一原因constriant 是为了将来灵活地为 if Employee 添加额外的约束。变成了IEmployee并且我对更改的设置更容易一些。

谁能解释一下使用 where 的目的是什么?单一类型的约束提供?

谢谢!

最佳答案

why would I ever want to just use a where constraint to restrict to a single concrete type?

不太正确 - 约束在 Employee 上type 和继承自它的任何类型,因此它可以应用于 ManagerCEO类(class)也是如此。

定义约束意味着您可以在 Employee 上使用任何可访问的方法在您的代码中键入,传入的类型是否为 Employee或继承类型。

关于c# - 为什么我会使用仅限于单一类型的 where 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588759/

相关文章:

c# - 获取内网认证用户

c# - CsvHelper 未正确解析

c# - 在另一个范围内赋予不同的含义

c# - 如何确定是否在 Windows 服务内部启动?

c# - 如何使用C#连接Mysql?

c# - 如何在 Autofac 的集成测试中注册 IOptions?

c# - Dynamics CRM 2011 实体

c# - 使用 ViewData 将对象传递给局部 View

c# - 如何从 View 传入的val设置JS var

c# - 由于授权无效,无法从服务帐户使用 GMail Api