日期:2014-05-20  浏览次数:20902 次

关于List<>.Sort不能排序的问题
以下代码 不能正确 排序 为什么 

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
  class Program
  {
  static void Main(string[] args)
  {
  List<point> ps = new List<point>();
  ps.Add(new point(0.0012));
  ps.Add(new point(0.000002));
  ps.Add(new point(0.4));
  ps.Add(new point(0.00002));
  ps.Add(new point(0.098));
  ps.Sort((point p1, point p2) =>
  {
  if (p1.x - p2.x < 1e-10)
  return 0;
  if (p1.x > p2.x)
  return 1;
  else
  return -1;
   
  });
  foreach (point p in ps)
  Console.WriteLine(p);
  }


  }

  public class point
  {
  public double x;
  public point(double d)
  {
  x = d;
  }
  public override string ToString()
  {
  return x.ToString();
  }
  }


   
}


------解决方案--------------------
ps.Sort((point p1, point p2) =>
{
if (System.Math.Abs(p1.x - p2.x) < 1e-10) return 0;
if (p1.x > p2.x)
return 1;
else
return -1;

});