隐式运算符List <employee>(公司值)?

时间:2015-12-24 02:01:13

标签: c# list ienumerable implicit-conversion

我试图找到一种方法让我的foreach循环看起来更清洁。

说我有一个&#34;公司&#34;类。该类包含多个列表,例如List Employees和List Managers。

然后,在我的代码中的某个地方,我想循环遍历这些列表。

我可以写:

strong-pm.json

但我认为简单地说:

是很好的
foreach (Employee in company.Employees) {}
foreach (Manager in company.Managers) {}

但它不会让我这样做。所以我尝试为公司创建一个简单的隐式转换,例如:

foreach (Employee in company) {}
foreach (Manager in company) {}

......而且令人惊讶的是,这没有任何错误,至少没有错误。

但是在foreach语句中,它给出了错误:CS1579 foreach语句不能对类型&#39;公司&#39;的变量进行操作。因为&#39;公司&#39;不包含&#39; GetEnumerator&#39;。

的公开定义

有一种简单的方法可以做到这一点,例如隐式运算符吗?如果没有,任何人都可以解释为什么要做到这么复杂吗?

1 个答案:

答案 0 :(得分:1)

我认为你不能这样做。 在您列出的代码中,class Employeeclass Manager是不同的类型,因此似乎有足够的信息来推断隐式转换。

但要认识到它们都来自class Object,并且可能共享其他类,例如class Person。那么这些表达式会留在哪里呢?

foreach(Object o in company) ...
foreach(Person p in company) ...

在这些情况下,您想要的隐式转换(EmployeesManagers)是不明确的,无法解析。

这就是为什么你提出的建议无法做到的原因:因为它无法在所有情况下都能发挥作用。