我试图找到一种方法让我的foreach循环看起来更清洁。
说我有一个"公司"类。该类包含多个列表,例如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语句不能对类型'公司'的变量进行操作。因为'公司'不包含' GetEnumerator'。
的公开定义有一种简单的方法可以做到这一点,例如隐式运算符吗?如果没有,任何人都可以解释为什么要做到这么复杂吗?
答案 0 :(得分:1)
我认为你不能这样做。
在您列出的代码中,class Employee
和class Manager
是不同的类型,因此似乎有足够的信息来推断隐式转换。
但要认识到它们都来自class Object
,并且可能共享其他类,例如class Person
。那么这些表达式会留在哪里呢?
foreach(Object o in company) ...
foreach(Person p in company) ...
在这些情况下,您想要的隐式转换(Employees
或Managers
)是不明确的,无法解析。
这就是为什么你提出的建议无法做到的原因:因为它无法在所有情况下都能发挥作用。