我对foreach行为有疑问C#.
我的自定义类实现了自定义GetEnumerator.此方法返回另一个object可隐式转换为的方法string.
但是,如果我foreach(string s in customClass)在运行时失败("无法将类型的对象转换为字符串").
但是,如果我这样做string x = new B()就像一个魅力.
注意:我没有必要在这里实现任何目标,我只是想了解发生了什么.我对这种非通用行为特别感兴趣.
有任何想法吗?我错过了哪些基础知识?
代码复制这个:
public class A : IEnumerable
{
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
yield return new B();
}
#endregion
}
public class B
{
public static implicit operator string( B b )
{
return "to-stringed implicit";
}
}
// CODE:
A a = new A();
// Works.
B b = …Run Code Online (Sandbox Code Playgroud)