相关疑难解决方法(0)

foreach如何将对象转换为指定类型?

我对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)

c# ienumerable foreach

4
推荐指数
2
解决办法
4590
查看次数

标签 统计

c# ×1

foreach ×1

ienumerable ×1