03. januar 2009 - 14:01Der 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
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); }
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))); }
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
jo, må lide af natteblindhed... Takker for hjælpen.
Synes godt om
Ny brugerNybegynder
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.