Đây phải là một chuyển ngữ khá đơn giản từ bài đăng bạn đã đề cập. Hãy chắc chắn rằng bạn đặt mã này trong một lớp ở đâu đó, mã C# phải nằm trong một lớp. Tôi giả sử bạn không quen thuộc với C#, vì vậy tôi sẽ làm đủ để cho thấy sự giống nhau và khác biệt, và hy vọng bạn có thể xử lý phần còn lại.
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;
}
Đối với một soluiton ngữ nhiều hơn, tôi sẽ trở lại một IEnumerable<Range>
, do đó, "danh sách" có thể được xây dựng và lặp đồng thời:
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))"
}
Phạm vi có cần phải tiếp giáp không? – Ivan