在C#中实现多个IEnumebles

Dav*_*fer 3 c# ienumerable

我有一个泛型类,Class<T>实现IEnumerable<T>.T也被限制实施IConvertable.

我也希望这个类能够假装成一个类似字符串的对象,所以我想实现IEnumerable<char>.然而,IEnumerable<T>IEnumerable<char>碰撞-如果发生什么事Tchar

有没有人对如何做到这一点有任何建议?

编辑:这里有一些澄清 - 我希望能够做到以下几点:

public IEnumerator<T> GetEnumerator()
{
    for (var i = _offset; i < _offset + _length; i++)
        yield return _array[i];
}

public IEnumerator<char> GetEnumerator()
{
    for (var i = _offset; i < _offset + _length; i++)
        yield return _array[i].ToChar(null);
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 10

有没有人对如何做到这一点有任何建议?

一般类型的声明,使基础类型可以在建设中统一有时是非法的,几乎总是一个坏主意.避免,避免,避免.

我的建议:如果你想要一个像字符串一样的对象,那么要么覆盖ToString(),要么声明一个显式的(或者,我想,隐式的)转换为字符串.如果用户想要一系列字符,那么他们可以从字符串中获取一个字符.

  • @Brian:我认为David所得到的是他的汇集策略是当枚举器对象被丢弃时,它可以被"重置"并填充回池中.如果您处于对GC压力高度敏感的环境中,这是一种有点可怕但相当常见的避免内存分配的技术.这听起来像是他. (2认同)