Code Bye

为什么这两个程序不一样

本人想问一下 为什么这两个程序原理应该是一样的,但为什么第一个程序报异常,第二个程序却能排序?都是字符串排序  都有null  这是为什么?  下面有一段MSDN上的备注  网页是https://msdn.microsoft.com/zh-cn/library/system.icomparable.compareto(v=vs.110).aspx
using System;
using System.Collections;
public class Temperature : IComparable
{
// The temperature value
protected string temperatureF;
public  int CompareTo(object obj)
{
Temperature otherTemperature = obj as Temperature;
if (obj!= null)
return this.temperatureF.CompareTo(otherTemperature.temperatureF);
else
throw new ArgumentException(“Object is not a Temperature”);
}
public string Fahrenheit
{
get
{
return this.temperatureF;
}
set
{
this.temperatureF = value;
}
}
}
public class CompareTemperatures
{
public static void Main()
{
ArrayList temperatures = new ArrayList();
// Initialize random number generator.
Random rnd = new Random();
// Generate 10 temperatures between 0 and 100 randomly.
Temperature a = new Temperature();
a.Fahrenheit = “Oded”;
temperatures.Add(a);
Temperature b = new Temperature();
b.Fahrenheit = null;
 temperatures.Add(b);
Temperature c = new Temperature();
c.Fahrenheit = “afjg”;
temperatures.Add(c);
Temperature d = new Temperature();
d.Fahrenheit = “Aog”;
temperatures.Add(d);
temperatures.Sort();
foreach (Temperature temp in temperatures)
Console.WriteLine(temp.Fahrenheit);
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace delete
{
class Program
{
static void Main(string[] args)
{
ArrayList a = new ArrayList();
a.Add(“v”);
a.Add(“x”);
a.Add(null);
            a.Add(“a”);
a.Sort();
foreach(string x in a)
Console.WriteLine(x);
}
}

}

解决方案

20

return string.Compare(this.temperatureF, otherTemperature.temperatureF);

20

return this.temperatureF.CompareTo(otherTemperature.temperatureF);
改为
return string.Compare(this.temperatureF, otherTemperature.temperatureF);
不能理解?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么这两个程序不一样