c# - 什么是 java Vector.element() C# 等价物

标签 c# java

这是我未完全尝试翻译的 java 代码

    static Enumeration enumerate()
    {
    Vector list = new Vector();
    Enumeration e = cache.keys();
    while (e.hasMoreElements())
    {
         Vector v = (Vector) cache.get(e.nextElement());
         for (int i = 0; i < v.size(); i++)
         {
         list.addElement(v.elementAt(i));
         }
    }
   return list.elements();
     }

这是C#翻译但不完整

    public static IEnumerable<Http> enumurate()
    {
        List<Http> list = new List<Http>();
        IEnumerator e = cache.Keys.GetEnumerator();
        while (e.MoveNext())/*While e has more element*/
        {
            var vector = (List<Http>)cache[e.Current];
            for (int i = 0; i < vector.Count; i++)
            {
                list.Add(vector.ElementAt<Http>(i));
            }
        }
        return //Something missing!!
    }

请帮忙!

最佳答案

在 C# 中 List<Http>工具 IEnumerable<Http>所以你可以简单地返回你的列表:

return list;

要将代码进一步转换为 C#,您可以跳过向列表添加元素并直接生成结果:

public static IEnumerable<Http> enumerate()
{
    IEnumerator e = cache.Keys.GetEnumerator();
    while (e.MoveNext())/*While e has more element*/
    {
        var vector = (List<Http>)cache[e.Current];
        for (int i = 0; i < vector.Count; i++)
        {
            yield return vector.ElementAt<Http>(i);
        }
    }
}

此外,您可以避免直接使用枚举器并使代码更具可读性:

public static IEnumerable<Http> enumerate()
{
    foreach (var key in cache.Keys)
    {
        foreach (var http in (List<Http>)cache[key])
        {
            yield return http;
        }
    }
}

关于c# - 什么是 java Vector.element() C# 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075403/

相关文章:

c# - 如果放弃 .NET 中的标准 EventHandler 模式,我会失去什么?

javascript - 两个选择列表的重复操作

c# - .NET 数据绑定(bind) - 文件夹和项目的递归树的自定义数据源

java - 如何在java中为带括号的字符串编写正则表达式?

java - 以编程方式访问 JMX 控制台的简单方法

java - 如何从 autohotkey 脚本运行 java .class 文件?

c# - C 和 C# 条件语句的更简单语法

c# - 比较 SynchronizationContext

Java静态和线程安全或做什么

java - 对于 JTable 的一列,如何在每一行中放置一个唯一的组合框编辑器?