Dies sollte eine ziemlich direkte Transliteration aus dem Beitrag sein, den Sie erwähnten. Stellen Sie sicher, dass Sie diesen Code irgendwo in einer Klasse platzieren, C# -Code muss in einer Klasse sein. Ich gehe davon aus, dass Sie mit C# nicht vertraut sind, also werde ich genug tun, um die Ähnlichkeiten und Unterschiede zu zeigen, und hoffentlich können Sie den Rest erledigen.
struct Range
{
public Range (int start, int end) { this.start = start; this.end = end; }
public int start;
public int end;
}
public static void SetToRanges(Dictionary<int,bool> indices, List<Range> ranges)
{
Range r = new Range(int.MinValue, int.MaxValue);
foreach (int i in indices.Keys)
{
// translate rest of code here
}
ranges.Add(r);
return ranges;
}
Für eine idiomatische soluiton, würde ich ein IEnumerable<Range>
zurückkehren, so dass die „Liste“ und iteriert gleichzeitig gebaut werden kann:
public static IEnumerable<Range> SetToRanges(Dictionary<int, bool> indices)
{
// instead of "ranges.Add(r)", use "yield return r".
// This returns multiple values in order from the function, that can
// be iterated with "foreach (Range i in SetToRanges(foo))"
}
Müssen die Bereiche zusammenhängend sein? – Ivan