天天看点

C#常用操作操作方法

.NET中有些方法以前没有接触过,但用过了之后让人眼前一亮,哇,原来你这么好用。

下面就说说被我忽视过的方法。当然,每个人的编程经历,涉猎面及对.NET的认知程度都不一样。所以,这只是一家之言,肯定有很多不足之处,欢迎大家批评指正。

1. ADO.NET类

DataTable.Merge()

如何合并两张表?自己以前写的方法:

C#常用操作操作方法
C#常用操作操作方法

哎,这个方法很傻很天真吧,其实DataTable中早就提供了合并两张表的方法,就是DataTable.Merge()。合并两张表,只要一条语句就行:

DataRow.ItemArray

结构相同的情况下,如何将一行的值赋给另一行?自己以前都这样写:

老天,要是有30多个列我可怎么办。其实DataRow有个ItemArray属性,只要一句话就完成了:

SqlCommand.Parameters.AddWithValue()

SqlCommand执行存储过程的时候怎么增加参数,类似这样做就可以了:

C#常用操作操作方法
C#常用操作操作方法

上面都分了两步,增加参数,然后再给参数赋值,其实我们可以一步到位的:

2. 集合类

List.AddRange()

怎么在List中怎样添加多个值,曾经的我是这样子的:

其实完全可以用一个方法就搞写,它就是AddRange().(在很多类中都有AddRange(),这里我只是用LIST来举例)

List.Find()与List.FindAll()

在List中查找特定值?以前我都是这样做:

C#常用操作操作方法
C#常用操作操作方法

其实完全可以不用foreach循环,用Find()就可以很好的解决:(FindAll()与Find()用法相似)

3 控件类

DataGridView.HitTest()

DataGridView中如何获取当前鼠标位置所在的行数与列数?我认为DataGridView会有这样的方法,但找了很久都没找到。终于工夫不负有心人,在VS智能提示下点点终于找到了。只怪这坑爹的命名HitTest?为毛不是Get,Find,Index之类开头啊。返回值还是一个内部类:DataGridView.HitTestInfo

ListBox.IndexFromPoint()

同样的,ListBox也有一个根据Point来获取行数的方法,即IndexFromPoint().你看,这个命名好多了:

4.其它

进制转换.

以前做进制转换,比如十六进制转八进制,还自己写过一个独立的方法。坑爹的,其实远不用这么麻烦,Convert.ToInt32()与string.Format()都有提供重载方法来实现: