C#常用操作操作方法

來源:互聯網
上載者:User

本文章轉載:http://www.cnblogs.com/Gyoung/archive/2012/05/08/2489585.html

 

.NET中有些方法以前沒有接觸過,但用過了之後讓人眼前一亮,哇,原來你這麼好用。

下面就說說被我忽視過的方法。當然,每個人的編程經曆,涉獵面及對.NET的認知程度都不一樣。所以,這隻是一家之言,肯定有很多不足之處,歡迎大家批評指正。

1. ADO.NET類

DataTable.Merge()

如何合并兩張表?自己以前寫的方法:

private void UniteTable(DataTable sourceTable, DataTable targetTable)        {            foreach (DataRow row in sourceTable.Rows)            {                DataRow newRow = targetTable.NewRow();                //將sourceTable中row的值賦給對應的targetTable中的row                newRow["column1"] = row["column1"];                //...                targetTable.Rows.Add(newRow);            }        }

哎,這個方法很傻很天真吧,其實DataTable中早就提供了合并兩張表的方法,就是DataTable.Merge()。合并兩張表,只要一條語句就行:

targetTable.Merge(sourceTable);

DataRow.ItemArray

結構相同的情況下,如何將一行的值賦給另一行?自己以前都這樣寫:

            DataRow row1 = table1.Rows[0];            DataRow row2 = table2.Rows[0];            row1["column1"] = row2["column1"];            row1["column2"] = row2["column2"];            //...

老天,要是有30多個列我可怎麼辦。其實DataRow有個ItemArray屬性,只要一句話就完成了:

row1.ItemArray = row2.ItemArray;

SqlCommand.Parameters.AddWithValue()

SqlCommand執行預存程序的時候怎麼增加參數,類似這樣做就可以了:

                //設定參數名和類型                cmd.Parameters.Add("@Target", SqlDbType.NChar);                cmd.Parameters.Add("@Description", SqlDbType.NChar);                cmd.Parameters.Add("@Actor", SqlDbType.NChar);                //給參數賦值                cmd.Parameters[0].Value = "ATarget";                cmd.Parameters[1].Value = "Description";                cmd.Parameters[2].Value = "Actor";

上面都分了兩步,增加參數,然後再給參數賦值,其實我們可以一步到位的:

                cmd.Parameters.AddWithValue("@Actor", "Actor");                cmd.Parameters.AddWithValue("@Target", "Target");                cmd.Parameters.AddWithValue("@Description", "Description");

2. 集合類

List.AddRange()

怎麼在List中怎樣添加多個值,曾經的我是這樣子的:

List<int> list = new List<int>();            list.Add(1);            list.Add(2);            list.Add(3);            list.Add(4);

其實完全可以用一個方法就搞寫,它就是AddRange().(在很多類中都有AddRange(),這裡我只是用LIST來舉例)

list.AddRange(new int[] { 1,2,3,4});

List.Find()與List.FindAll()

在List中尋找特定值?以前我都是這樣做:

          foreach (int i in list)            {                if (i == 3)                {                    Console.Write(i);                }            }

其實完全可以不用foreach迴圈,用Find()就可以很好的解決:(FindAll()與Find()用法相似)

int result = list.Find(delegate(int i) { return i == 3; });

3 控制項類

DataGridView.HitTest()

DataGridView中如何擷取當前滑鼠位置所在的行數與列數?我認為DataGridView會有這樣的方法,但找了很久都沒找到。終於工夫不負有心人,在VS智能提示下點點終於找到了。只怪這坑爹的命名HitTest?為毛不是Get,Find,Index之類開頭啊。傳回值還是一個內部類:DataGridView.HitTestInfo

            //捕獲滑鼠點擊地區的資訊            DataGridView.HitTestInfo hitTestInfo= this.sourceGrid.HitTest(e.X, e.Y);            //擷取所在行數            int rowIndex = hitTestInfo.RowIndex;            //擷取所在列數            int columnIndex = hitTestInfo.ColumnIndex;

ListBox.IndexFromPoint()

同樣的,ListBox也有一個根據Point來擷取行數的方法,即IndexFromPoint().你看,這個命名好多了:

           // Get the index of the item the mouse is below.           indexOfItemUnderMouseToDrag = ListDragSource.IndexFromPoint(e.X, e.Y);

4.其它

進位轉換.

以前做進位轉換,比如十六進位轉八進位,還自己寫過一個獨立的方法。坑爹的,其實遠不用這麼麻煩,Convert.ToInt32()與string.Format()都有提供重載方法來實現:

            //將十六進位“10”轉換為十進位i            int i = Convert.ToInt32("10", 16);            //將十進位i轉換為十六進位s            string s = string.Format("{0:X}", i);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.