在C#中使用List编程

                                    在C#中使用List编程

原文地址http://www.c-sharpcorner.com/Ebooks/Download.aspx?eId=61

简介

   泛型是元素的集合,可以通过其索引和提供的功能来进行检索,排序,操作泛型中的项目。

   List<T>类是定义在命名空间System.Collections.Generic下的一个通用类,其可以以任何数据类型来创建一个泛型。在你在你的代码中使用泛型类之前,你必须引入以如下的方式引入命名空间。

using System.Collections.Generic;

 

创建一个泛型

泛型类的构造函数需要一个关键的数据类型。这个数据类型可以是.net中的任何数据类型。

下面的代码段创建了一个字符泛型。

List<string> AuthorList = new List<string>();

 

下面的代码段向该泛型中添加元素。

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

另外,我们可以使用对象数组来创建泛型对象。下面的代码将向你展示使用字符串数组来创建一个泛型对象。

// Create a List using Range

string[] authors = { "Mike Gold", "Don Box",

"Sundar Lal", "Neel Beniwal" };

List<string> authorsRange = new List<string>(authors);

  下面的代码使用整型创建了一个泛型。

List<int> AgeList = new List<int>();

      以下的代码向其中添加元素。

AgeList.Add(35);

AgeList.Add(25);

AgeList.Add(29);

AgeList.Add(21);

AgeList.Add(84);

 我们也能够限制泛型的大小。下面的代码将创建一个浮点型泛型,并限制他的大小,它只能包含3个元素。

List<float> PriceList = new List<float>(3);

下面的代码将向这个集合中添加元素。

PriceList.Add(3.25f);

PriceList.Add(2.76f);

PriceList.Add(1.15f);

创建对象泛型

泛型类能够用来创建任何类型的泛型,包括类。在这篇文章里,你奖看到创建一个带有若干属性的类泛型。

我们在下面首先定义一个名为Author的类,其中含有5个公有属性,其中包括字符串类型的Name, Age, BookTitle,波尔类型的mvp,日期类型的PublishedDate。

public class Author

{

private string name;

private short age;

private string title;

private bool mvp;

private DateTime pubdate;

public Author(string name, short age, string title, bool mvp, DateTime pubdate)

{

this.name = name;

this.age = age;

this.title = title;

this.mvp = mvp;

this.pubdate = pubdate;

}

public string Name

{

get { return name; }

set { name = value; }

}

public short Age

{

get { return age; }

set { age = value; }

}

public string BookTitle

{

get { return title; }

set { title = value; }

}

public bool IsMVP

{

get { return mvp; }

set { mvp = value; }

}

public DateTime PublishedDate

{

get { return pubdate; }

set { pubdate = value; }

}

}

 

下面的代码中将创建一个Author泛型。

List<Author> AuthorList = new List<Author>();

 

下面的代码中将创建Author实例,并将其添加到Author泛型中

AuthorList.Add(new Author("Mahesh Chand", 35, "A Prorammer's Guide to ADO.NET", true, new DateTime(2003,7,10)));

AuthorList.Add(new Author("Neel Beniwal", 18, "Graphics Development with C#", false, new DateTime(2010, 2, 22)));

AuthorList.Add(new Author("Praveen Kumar", 28, "Mastering WCF", true, new DateTime(2012, 01, 01)));

AuthorList.Add(new Author("Mahesh Chand", 35, "Graphics Programming with GDI+", true, new DateTime(2008, 01, 20)));

AuthorList.Add(new Author("Raj Kumar", 30, "Building Creative Systems", false, new DateTime(2011, 6, 3)));

 

下面的代码中将遍历这个泛型,输出每个Author对象中的成员。

foreach (var author in AuthorList)

{

Console.WriteLine("Author: {0},{1},{2},{3},{4}", author.Name, author.Age, author.BookTitle, author.IsMVP, author.PublishedDate);

}

 

读泛型中的元素

泛型是集合类。我们能够使用foreach来循环遍历其中的所有元素。下面的代码读取所有的项目,并将其逐个通过控制台输出。

foreach (string author in AuthorList)

{

Console.WriteLine(author);

}

 

我们能够使用var来遍历热河数据类型。

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

 

下面的代码将创建一个泛型,并读取其中所有元素输出到控制台。

public void CreateList()

{

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Read all data

Console.WriteLine("Authors List");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

}

 

泛型属性

泛型具有三个属性Capacity, Count, and Item

Capacity

Capacity属性能够设置及获得这个集合的容纳量。Capacity值总是大于或者等于Count值。

下面的代码中将创建一个author泛型,并显示其初始的capacity值,然后程序将调用TrimExcess设置capacity。然后将capacity设置为20.

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Original Capacity

Console.WriteLine("Original Capacity: {0}", AuthorList.Capacity);

// Trim excess

AuthorList.TrimExcess();

Console.WriteLine("Trimmed Capacity: {0}", AuthorList.Capacity);

// Update Capacity

AuthorList.Capacity = 20;

Console.WriteLine(AuthorList.Capacity);

Console.WriteLine("Updated Capacity: {0}", AuthorList.Capacity);

 

Count

Count属性将获得这个泛型中的实际元素的数目。

下面的代码将展示显示一个泛型中元素的数目。

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Count

Console.WriteLine("Count: {0}", AuthorList.Count);

 

Item

Item属性设置获取指定索引的关联值。

下面的代码将设置泛型中第一个元素的值。

// Set Item value

AuthorList["Mahesh Chand"] = 20;

// Get Item value

Int16 age = Convert.ToInt16(AuthorList["Mahesh Chand"]);

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Get first item of a List

string auth = AuthorList[0];

Console.WriteLine(auth);

// Set first item of a List

AuthorList[0] = "New Author";

 

属性方法

泛型类是通用的集合,其提供了所有公用的方法用来增加,删除,查找,替换集合中的 元素。

Add Items

增加方法增加一个元素到泛型中。下面将向你展示使用Add方法向泛型中增加元素。

// Create a list

List<string> AuthorList = new List<string>();

// Add items using Add method

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

AddRange方法用来将一个集合中的元素添加到泛型中。下面的代码将向你展示该方法的使用。

// Add a range of items

string[] authors = { "Mike Gold", "Don Box",

"Sundar Lal", "Neel Beniwal" };

AuthorList.AddRange(authors);

Insert Items

Insert方法能够 将一个元素插入到泛型的特定位置。下面的代码中将首先创建一个泛型,然后使用Insert方法向其中插入元素。

// Create a list

List<string> AuthorList = new List<string>();

// Add items using Add method

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Insert an item at position 2

AuthorList.Insert(1, "Second Author");

 

AddRange方法可以将一个集合中的元素插入到泛型中。下面的代码将展示如果使用AddRange方法方法。

// Insert a range of items

string[] authors = { "Mike Gold", "Don Box",

"Sundar Lal", "Neel Beniwal" };

AuthorList.InsertRange(4, authors);

 

Remove Items

Remove方法移除一个泛型中的第一次出现特定元素。Remove方法需要一个元素作为其参数。下面将展示如何使用该方法。

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

AuthorList.Remove("Mahesh Chand");

 

RemoveAt方法移除从0开始的指定索引。下面的代码将删除集合中索引为2的元素。

AuthorList.RemoveRange(3, 2);

 

Clear方法将删除泛型中的所有元素。下面的代码将展示其用法。

AuthorList.Clear();

 

Searching

BinarySearch方法使用二进制搜索算法在排序的集合中搜索指定项目。

// Create a list of strings

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

int itemPosition = AuthorList.BinarySearch("Raj Kumar");

Console.WriteLine("Item found at position: {0}", itemPosition + 1);

 

Sorting

Sorting方法排序泛型中的所有项目。下面的代码将向你展示创建一个泛型,并对其进行排序。

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Read all data

Console.WriteLine("Original Authors List");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

AuthorList.Sort();

Console.WriteLine("Sorted Authors List");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

 

Reverse

Reverse方法将反向泛型中的项目。下面的代码将首先创建一个泛型,然后将其反向。

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Read all data

Console.WriteLine("Original Authors List");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

AuthorList.Reverse();

Console.WriteLine("Reversed Authors List");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

 

Copy a List

CopyTo方法将复制泛型到一个一维数组中。其有三种形式的重载。

下面将向你展示其用法。

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Dinesh Beniwal");

// Create an array of strings

string[] authorArray = new string[15];

// Copy entire List

AuthorList.CopyTo(authorArray);

// Copy items starting at index = 4

AuthorList.CopyTo(authorArray, 4);

// Copy 4 items starting at index 2 in List and copying

// to array starting at index 10

AuthorList.CopyTo(2, authorArray, 3, 4);

foreach (string author in authorArray)

{

Console.WriteLine(author);

}

 

Find an Item

Contains方法将查找特定的元素是否存在于泛型中。下面的代码将向你展示其用法。

if (AuthorList.Contains("Mahesh Chand"))

AuthorList.Remove("Mahesh Chand");

 

IndexOf方法将返回指定元素的第一个索引值。

int idx = AuthorList.IndexOf("Nipun Tomar");

 

LastIndexOf方法将返回指定元素的最后一个索引值。

idx = AuthorList.LastIndexOf("Mahesh Chand");

 

     下面的代码将向你展示这些方法的用法。

List<string> AuthorList = new List<string>();

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Praveen Kumar");

AuthorList.Add("Raj Kumar");

AuthorList.Add("Nipun Tomar");

AuthorList.Add("Mahesh Chand");

AuthorList.Add("Dinesh Beniwal");

// Contains - Check if an item is in the list

if (AuthorList.Contains("Mahesh Chand"))

{

Console.WriteLine("Author found!");

}

// Find an item and replace it with new item

int idx = AuthorList.IndexOf("Nipun Tomar");

if (idx >= 0)

{

AuthorList[idx] = "New Author";

}

Console.WriteLine("\nIndexOf ");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

// Find Last index of

idx = AuthorList.LastIndexOf("Mahesh Chand");

if (idx >= 0)

{

AuthorList[idx] = "New Mahesh";

}

Console.WriteLine("\nLastIndexOf ");

foreach (var author in AuthorList)

{

Console.WriteLine(author);

}

 

 

 

 

 

 

 

 

 

posted @ 2014-01-24 14:10  白色橡皮  阅读(2514)  评论(0编辑  收藏  举报