[Fork] Unable to sort because the IComparer.Compare() method returns inconsistent results

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		List<CustomObject> list = new List<CustomObject>
        {
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
          new CustomObject { Value = 3 },
          new CustomObject { Value = 1 },
          new CustomObject { Value = 2 },
        };
         
        list.Sort(delegate(CustomObject s1, CustomObject s2)
        {
           if (s1.Value > s2.Value+2) return 1;
           if (s1.Value < s2.Value+2) return -1;
    
           return 0;
        });
	}
	
	public class CustomObject
    {
        public int Value { get; set; }
    }
}
;