SFu*_*n28 3 .net reflection .net-4.0 .net-2.0
无视任何理智的理由,只是出于好奇,
是否有可能采取任何给定的IEnumerable(T)并覆盖所包含的项目?例如,给定IEnuemrable(String)是否可以完全替换IEnumerable中的所有字符串?
正如其他人所说,如果IEnumerable是像List或Collection,Set等那样具体的东西,那么你可以在没有反射的情况下做到这一点 - 只需将其转换为该类型并将其弄乱.
如果IEnumerable是使用迭代器生成的,例如:
public IEnumerable<int> EvenNumbers
{
get
{
int i = 2;
while (true)
{
yield return i;
i += 2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你怎么能达到这个并取代一些价值?没有要替换的值 - 下一个值来自循环的下一个评估.在任何地方都没有对这个Enumerable进行全面评估,你必须不断询问下一个值,直到你得到你想要的东西.
所以不,你不能保证对于所有IEnumerables你可以挖掘并修改底层值,因为有时候没有底层值.
| 归档时间: |
|
| 查看次数: |
2404 次 |
| 最近记录: |