夜光序言:
玻璃窗下,笑谈声——不断,空白的双目,望窗外车来人往。
正文:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 案例1
{
class Stu : IComparable //需要实现一下接口
{
public int id;
public string name;
public int age;
public override string ToString()
{
return string.Format("id={0},name={1},age={2}",id,name,age);
}
public int CompareTo(object obj)//把刚才这个代码拷贝过来,并且进行定义
{
// this(当前的学生对象)和另一个学生对象obj的按照id号的比较
Stu s2 = (Stu)obj;
return this.id - s2.id; //如果减出来是一个正数,那么在前面,如果是负数,那么在后面
}
}
class Program
{
static void Main(string[] args)
{
int[] a = new int[] { 1, 2, 3 };
/* s1.id = 1;
s1.name = "hy";*/
Stu s1 = new Stu() { id = 5, name = "萧炎", age = 25 };
Stu s2 = new Stu() { id = 2, name = "林动", age = 25 };
Stu s3 = new Stu() { id = 9, name = "牧尘", age = 25 };
/* Stu[] sa = new Stu[] { s1, s2, s3 }; //夜光:我们就用数组来看下
//接下来进行排序
Array.Sort(sa);*/
//我们可以用list来进行排序
List<Stu> sa = new List<Stu>();
sa.Add(s1);
sa.Add(s2);
sa.Add(s3);
sa.Sort(); //夜光:这里需要给排序定义一个规则
//在内部排序的时候会调用IComparable.CompareTo方法对两个数进行排序比较
//下面,我们写两个循环
/* for(int i = 0; i < a.Length; i++) //外循环
{
for(int j = i + 1; j < a.Length; j++) //内循环
{
*//*if(a[i].CompareTo(a[j])>0)*/
/*if(a[i] > a[j]) //比较两个元素*//*
{
// a[i] 与 a[j] 进行比较
}
}
}*/
//接下里,用一个for循环输出一下
for (int i = 0; i < sa.Count; i++) //我们这里使用count
{
Console.WriteLine(sa[i]);
}
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 案例2
{
//夜光
class Stu : IComparable //需要实现一下接口
{
public int id;
public string name;
public int age;
public override string ToString()
{
return string.Format("id={0},name={1},age={2}", id, name, age);
}
public int CompareTo(object obj)//把刚才这个代码拷贝过来,并且进行定义
{
// this(当前的学生对象)和另一个学生对象obj的按照id号的比较
Stu s2 = (Stu)obj;
/*return this.name.CompareTo(s2.name); //按照name进行排序*/
return this.id - s2.id;
}
public static bool operator ==(Stu s1,Stu s2) //写一下等于
{
return s1.CompareTo((object)s2) ==0; //因为是object类型的,所以这里需要比较一下
}
public static bool operator !=(Stu s1, Stu s2) //写一下不等于
{
return !(s1 == s2); //因为是object类型的,所以这里需要比较一下
}
}
class Program
{
static void Main(string[] args)
{
int[] a = new int[] { 1, 2, 3 };
/* s1.id = 1;
s1.name = "hy";*/
Stu s1 = new Stu() { id = 5, name = "萧炎", age = 25 };
Stu s2 = new Stu() { id = 2, name = "林动", age = 25 };
Stu s3 = new Stu() { id = 9, name = "牧尘", age = 25 };
if(s1 == s2) //默认比较S1和S2是否指向同一对象,换句话说,即使S1和S2的内容完全相同,也不一定相等
{
}
/* Stu[] sa = new Stu[] { s1, s2, s3 }; //夜光:我们就用数组来看下
//接下来进行排序
Array.Sort(sa);*/
//我们可以用list来进行排序
List<Stu> sa = new List<Stu>();
sa.Add(s1);
sa.Add(s2);
sa.Add(s3);
sa.Sort(); //夜光:这里需要给排序定义一个规则
//在内部排序的时候会调用IComparable.CompareTo方法对两个数进行排序比较
//下面,我们写两个循环
/* for(int i = 0; i < a.Length; i++) //外循环
{
for(int j = i + 1; j < a.Length; j++) //内循环
{
*//*if(a[i].CompareTo(a[j])>0)*/
/*if(a[i] > a[j]) //比较两个元素*//*
{
// a[i] 与 a[j] 进行比较
}
}
}*/
//接下里,用一个for循环输出一下
for (int i = 0; i < sa.Count; i++) //我们这里使用count
{
Console.WriteLine(sa[i]);
}
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 案例2
{
//夜光
class Stu : IComparable //需要实现一下接口
{
public int id;
public string name;
public int age;
public override string ToString()
{
return string.Format("id={0},name={1},age={2}", id, name, age);
}
public int CompareTo(object obj)//把刚才这个代码拷贝过来,并且进行定义
{
// this(当前的学生对象)和另一个学生对象obj的按照id号的比较
Stu s2 = (Stu)obj;
/*return this.name.CompareTo(s2.name); //按照name进行排序*/
return this.id - s2.id;
}
public static bool operator ==(Stu s1,Stu s2) //写一下等于
{
return s1.CompareTo((object)s2) ==0; //因为是object类型的,所以这里需要比较一下
}
public static bool operator !=(Stu s1, Stu s2) //写一下不等于
{
return !(s1 == s2); //因为是object类型的,所以这里需要比较一下
}
public override bool Equals(object obj)
{
return this.CompareTo((object)obj) ==0;
}
public override int GetHashCode() //重写一下方法
{
return this.id; //返回值id
}
}
class Program
{
static void Main(string[] args)
{
int[] a = new int[] { 1, 2, 3 };
/* s1.id = 1;
s1.name = "hy";*/
Stu s1 = new Stu() { id = 5, name = "萧炎", age = 25 };
Stu s2 = new Stu() { id = 2, name = "林动", age = 25 };
Stu s3 = new Stu() { id = 9, name = "牧尘", age = 25 };
if(s1 == s2) //默认比较S1和S2是否指向同一对象,换句话说,即使S1和S2的内容完全相同,也不一定相等
{
}
//我们使用下面的进行测试
Console.WriteLine(s1 == s2);
Console.WriteLine(s1.Equals(s2));
/* Stu[] sa = new Stu[] { s1, s2, s3 }; //夜光:我们就用数组来看下
//接下来进行排序
Array.Sort(sa);*/
//我们可以用list来进行排序
List<Stu> sa = new List<Stu>();
sa.Add(s1);
sa.Add(s2);
sa.Add(s3);
sa.Sort(); //夜光:这里需要给排序定义一个规则
//在内部排序的时候会调用IComparable.CompareTo方法对两个数进行排序比较
//下面,我们写两个循环
/* for(int i = 0; i < a.Length; i++) //外循环
{
for(int j = i + 1; j < a.Length; j++) //内循环
{
*//*if(a[i].CompareTo(a[j])>0)*/
/*if(a[i] > a[j]) //比较两个元素*//*
{
// a[i] 与 a[j] 进行比较
}
}
}*/
//接下里,用一个for循环输出一下
for (int i = 0; i < sa.Count; i++) //我们这里使用count
{
Console.WriteLine(sa[i]);
}
Console.ReadLine();
}
}
}