Это должна быть довольно простая транслитерация из поста, который вы упомянули.Убедитесь, что вы поместили этот код в класс где-то, код C # должен быть в классе.Я предполагаю, что вы не очень знакомы с C #, поэтому я сделаю достаточно, чтобы показать сходства и различия, и, надеюсь, вы справитесь с остальными.
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;
}
Для более идиоматического решения я бывернуть IEnumerable<Range>
, поэтому «список» может быть построен и повторен одновременно:
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))"
}