Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the java Vector.element() C# equivalent

Tags:

java

c#

Here is the java code i incompletely tried to translate

    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();
     }

This is the C# translation but not complete

    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!!
    }

Any help please !

like image 361
Xris Avatar asked Aug 30 '26 20:08

Xris


1 Answers

In C# List<Http> implements IEnumerable<Http> so you can simply return your list:

return list;

To convert the code to C# even more, you could just skip the adding of elements to the list and yield results directly:

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);
        }
    }
}

Also, you can avoid using enumerators directly and make the code even more readable:

public static IEnumerable<Http> enumerate()
{
    foreach (var key in cache.Keys)
    {
        foreach (var http in (List<Http>)cache[key])
        {
            yield return http;
        }
    }
}
like image 166
Damir Arh Avatar answered Sep 02 '26 11:09

Damir Arh