这个c#程序,那行list.sort(),怎么就对他们的年龄进行排序了呢,也没说明根据啥排啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个c#程序,那行list.sort(),怎么就对他们的年龄进行排序了呢,也没说明根据啥排啊相关的知识,希望对你有一定的参考价值。

list.sort()等价于list.sort(0,list.Count,Comparer<Person>.Default)
它使用了Person的默认比较器来比较
如果Person类实现了IComparable接口,实现的过程里应该是按年龄来比较的追问

对对,他是实现了这接口

您写的那个list(0,...)那个我还是没太看懂,为什么就默认比较person类去了

他底下这个比较姓名排序的这个实现的不是icomparable啊,是icompare接口

追答

我看错,是等价于list.sort(0,list.Count,Comparer.Default)
使用Comparer.Default进行比较时,当前一个待比较对象实现IComparable时,他会用前一个待比较对象的CompareTo()方法来比较两个对象

继承了IComparer接口的类可以当作比较器来用
PersonComparerName 是自定义的比较器 “Comparer”

继承icomparable接口后会自动产生默认的“Comparer”

追问

comparer不是icomparer的嘛,怎么又成了icomparable的了

而且我还是不明白为什么不加参数就调person类比较

追答

不是调用person类比较 是调用要比较的两个对象中的前一个对象的CompareTo()方法来比较两个对象

这里恰好都是person类而已。
实现IComparable接口使类的实例支持与其它对象实例比较。IComparer是用来比较其它两个对象的。

参考技术A Person类有没有实现IComparer接口?追问

不是啊

C#里怎么根据一个对象的名称来取得这个对象的属性

就是我传入一个Form上有的一个对象的名称,从而来设置它的属性!
就是比如我Form上有一些文本对象,名称是L1->L6
我就想写一个方法传入一个string字符串,比如传入L1,那么我就对L1这个文本对象来进行操作(设置Text)

你可以取得form的controls,通过controls可以取到直接放在form上的控件。
如果你的label放在了别的容器中,你需要通过form的controls取到容器控件,在通过容器控件的controls属性来取得需要的控件。

以下是VB的类似代码,参考一下。思路一样,只是语法不同罢了。

For Each ctl As Control In ctrls
Select Case ctl.GetType.Name
Case GetType(TextBox).Name
errProvider.SetIconPadding(ctl, -18)
If (Not ctl.Tag Is Nothing) AndAlso ctl.Tag.ToString() = "EmailCheck" Then
AddHandler ctl.Validating, AddressOf EmailValidating
ElseIf (Not ctl.Tag Is Nothing) AndAlso ctl.Tag.ToString() = "FolderCheck" Then
AddHandler ctl.Validating, AddressOf DirValidating
Else
AddHandler ctl.Validating, AddressOf DataValidating
End If
Case GetType(ComboBox).Name
errProvider.SetIconPadding(ctl, -36)
AddHandler ctl.Validating, AddressOf DataValidating
Case Else
If ctl.Controls.Count > 0 Then
SetErrorProvider(ctl.Controls)
End If
End Select
Next
参考技术A 把控件放进HashTable,名称为键 参考技术B 可以遍历窗体上的控件,然后找到L1这个控件,然后可以进行设置 参考技术C atalentsoft - 已经回答了 参考技术D System.Reflection 第5个回答  2009-04-10 说的具体一些

以上是关于这个c#程序,那行list.sort(),怎么就对他们的年龄进行排序了呢,也没说明根据啥排啊的主要内容,如果未能解决你的问题,请参考以下文章

Java里面的Collections.sort(list)。 sort这个方法在API哪里能找的到

halcon在vs2010 C#中 从工具箱拖动HWindowControl控件出现以下错误啥原因,怎么解决

c# 如何删除datagrieview中指定那行数据

拜托了各位亲 么么哒 C#中绑定了控件 想往dataGridView中添加一行数据 怎么办???????????急

简单排序,C# 直接使用 List。

C#里怎么根据一个对象的名称来取得这个对象的属性