Avatar billede jimgordon Nybegynder
03. januar 2009 - 14:01 Der er 3 kommentarer og
2 løsninger

VB.NET til C#

Sidder med nogle extensions i vb der skal oversættes til C# og er gået kold i de generiske ienumerable. Nogle der kan lave dem til C#.

    <Extension()> _
    Sub AddRange(Of T)(ByVal col As ICollection(Of T), ByVal sequence As IEnumerable(Of T))
        For Each item In sequence
            col.Add(item)
        Next
    End Sub

her er mit go, der ikke virker:
        public static void AddRange<T>(this ICollection<T> col, IEnumerable<T>sequence)
        {
            foreach (IEnumerable<T>item in sequence)
                col.Add(item);
        }

Her er jeg gået helt kold med inline funktioner.
    <Extension()> _
    Function MinDBL(Of T)(ByVal x As IEnumerable(Of T), ByVal y As Func(Of T, String)) As Double
        Return x.Min(Function(z) CDbl(y(z)))
    End Function
Avatar billede driis Nybegynder
03. januar 2009 - 14:39 #1
Det er fordi at man i C# ikke skal angive Extension attributten eksplicit, men i stedet bruge this keyword på første parameter. Så dit første eksempel bliver til:

public static void (this ICollection<T> col, IEnumerable<T> sequence)
{
  foreach(var item in sequence)
    col.Add(item);
}

(Utestet, men jeg skulle mene at den er ok).
Avatar billede driis Nybegynder
03. januar 2009 - 14:43 #2
Skal nok lige have funktionsnavnet med :-)
public static void AddRange<T>(this ICollection<T> col, IEnumerable<T> sequence)
{
  foreach(var item in sequence)
    col.Add(item);
}

Og den næste er nok:
public static double MinDBL<T>(this IEnumerable<T> x, Func<T,string> y)
{
  return x.Min(z => Convert.ToDouble(y(z)));
}
Avatar billede jimgordon Nybegynder
03. januar 2009 - 23:36 #3
ok tak, min foreach variable var forkert. Har du en ide til den sidste:

    <Extension()> _
    Function MinDBL(Of T)(ByVal x As IEnumerable(Of T), ByVal y As Func(Of T, String)) As Double
        Return x.Min(Function(z) CDbl(y(z)))
    End Function
Avatar billede driis Nybegynder
04. januar 2009 - 01:11 #4
Er den ikke god nok den jeg har postet allerede ?

public static double MinDBL<T>(this IEnumerable<T> x, Func<T,string> y)
{
  return x.Min(z => Convert.ToDouble(y(z)));
}
Avatar billede jimgordon Nybegynder
04. januar 2009 - 14:42 #5
jo, må lide af natteblindhed...
Takker for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester