我有一个通用类,Class<T>
, 实现 IEnumerable<T>
. T
也被迫实现IConvertable
.
我也希望这个类能够伪装成一个类似字符串的对象,所以我想实现IEnumerable<char>
.然而,IEnumerable<T>
和 IEnumerable<char>
碰撞——如果 T
会发生什么是char
?
有没有人对如何实现这一目标有任何建议?
编辑:这里有一些说明——我希望能够执行以下操作:
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);
}
最佳答案
Does anyone have any suggestions on how to accomplish this?
泛型类型的声明使得基础类型可以在构造中统一有时是非法的,而且几乎总是一个坏主意。避免,避免,避免。
我的建议:如果您想要一个像字符串一样工作的对象,那么要么覆盖 ToString(),要么声明一个到字符串的显式(或者,我想,隐式)转换。如果用户想要一系列字符,那么他们可以从字符串中获取一个。
关于c# - 在 C# 中实现多个 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4196621/