C# IList<T>的用法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# IList<T>的用法?相关的知识,希望对你有一定的参考价值。

C#中的 IList<T> 的用法?
我要写一个方法
public static IList<T> getUserByT(T t,out int total)(T是User表的实体类)
从数据库中获取User表中的具体信息 返回IList<T>中,这个代码要怎么写?
ps--- 前提是不知道T实体类中的属性有几个--以后可能还要添加
问题是从数据库里查出来之后怎么往对象里面放
ps.list.add(对象)这个会
问题是不知道怎么往实体类对象里面放
(实体类中的属性是不固定的,不能 对象名.属性这样一个一个赋值)

比如说我从数据库查出来的数据是DataTable类型的数据集
怎么从DataTable里把数据取出来放进实体类的对象里

声明:
1、List<T> mList = new List<T>();

T为列表中元素类型,现在以string类型作为例子

E.g.:List<string> mList = new
List<string>();

2、List<T> testList =new List<T>
(IEnumerable<T> collection);

以一个集合作为参数创建List

E.g.:
string[] temArr = "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim",
"Kuku", "Locu" ;
List<string> testList = new
List<string>(temArr);

添加元素:

1、 List. Add(T item) 添加一个元素

E.g.:mList.Add("John");

2、 List. AddRange(IEnumerable<T> collection) 添加一组元素

E.g.:
string[] temArr = "Ha","Hunter", "Tom", "Lily", "Jay", "Jim",
"Kuku", "Locu" ;
mList.AddRange(temArr);

3、Insert(int index, T item); 在index位置添加一个元素

E.g.:mList.Insert(1, "Hei");
参考技术A 写个事件,想什么时候加就什么时候加,具体添加方法是list.add() 参考技术B list.add(实体类的对象) 参考技术C 可以用LINQ 参考技术D IList 接口
表示可按照索引单独访问的对象的非泛型集合。

命名空间: System.Collections
程序集: mscorlib(在 mscorlib.dll 中)

备注
IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口。IList 实现有三种类别:只读、固定大小和可变大小。无法修改只读 IList。固定大小的 IList 不允许添加或移除元素,但允许修改现有元素。可变大小的 IList 允许添加、移除和修改元素。

有关此接口的泛型版本,请参见 System.Collections.Generic..::.IList<(Of <(T>)>) 。

示例
下面的示例演示创建一个简单列表——固定大小列表的 IList 接口的实现。

C#
using System;
using System.Collections;

class Example

public static void Demo(System.Windows.Controls.TextBlock outputBlock)

SimpleList test = new SimpleList();

// Populate the List
outputBlock.Text += "Populate the List" + "\n";
test.Add("one");
test.Add("two");
test.Add("three");
test.Add("four");
test.Add("five");
test.Add("six");
test.Add("seven");
test.Add("eight");
test.PrintContents(outputBlock);
outputBlock.Text += "\n";

// Remove elements from the list
outputBlock.Text += "Remove elements from the list" + "\n";
test.Remove("six");
test.Remove("eight");
test.PrintContents(outputBlock);
outputBlock.Text += "\n";

// Add an element to the end of the list
outputBlock.Text += "Add an element to the end of the list" + "\n";
test.Add("nine");
test.PrintContents(outputBlock);
outputBlock.Text += "\n";

// Insert an element into the middle of the list
outputBlock.Text += "Insert an element into the middle of the list" + "\n";
test.Insert(4, "number");
test.PrintContents(outputBlock);
outputBlock.Text += "\n";

// Check for specific elements in the list
outputBlock.Text += "Check for specific elements in the list" + "\n";
outputBlock.Text += String.Format("List contains \"three\": 0", test.Contains("three")) + "\n";
outputBlock.Text += String.Format("List contains \"ten\": 0", test.Contains("ten")) + "\n";

// class Program

class SimpleList : IList

private object[] _contents = new object[8];
private int _count;

public SimpleList()

_count = 0;


// IList Members
public int Add(object value)

if (_count < _contents.Length)

_contents[_count] = value;
_count++;

return (_count - 1);

else

return -1;



public void Clear()

_count = 0;


public bool Contains(object value)

bool inList = false;
for (int i = 0; i < Count; i++)

if (_contents[i] == value)

inList = true;
break;


return inList;


public int IndexOf(object value)

int itemIndex = -1;
for (int i = 0; i < Count; i++)

if (_contents[i] == value)

itemIndex = i;
break;


return itemIndex;


public void Insert(int index, object value)

if ((_count + 1 <= _contents.Length) && (index < Count) && (index >= 0))

_count++;

for (int i = Count - 1; i > index; i--)

_contents[i] = _contents[i - 1];

_contents[index] = value;



public bool IsFixedSize

get

return true;



public bool IsReadOnly

get

return false;



public void Remove(object value)

RemoveAt(IndexOf(value));


public void RemoveAt(int index)

if ((index >= 0) && (index < Count))

for (int i = index; i < Count - 1; i++)

_contents[i] = _contents[i + 1];

_count--;



public object this[int index]

get

return _contents[index];

set

_contents[index] = value;



// ICollection Members

public void CopyTo(Array array, int index)

int j = index;
for (int i = 0; i < Count; i++)

array.SetValue(_contents[i], j);
j++;



public int Count

get

return _count;



public bool IsSynchronized

get

return false;



// Return the current instance since the underlying store is not
// publicly available.
public object SyncRoot

get

return this;



// IEnumerable Members

public IEnumerator GetEnumerator()

// Refer to the IEnumerator documentation for an example of
// implementing an enumerator.
throw new Exception("The method or operation is not implemented.");


public void PrintContents(System.Windows.Controls.TextBlock outputBlock)

outputBlock.Text += String.Format("List has a capacity of 0 and currently has 1 elements.", _contents.Length, _count) + "\n";
outputBlock.Text += "List contents:";
for (int i = 0; i < Count; i++)

outputBlock.Text += String.Format(" 0", _contents[i]);

outputBlock.Text += "\n";



// This code produces output similar to the following:
// Populate the List:
// List has a capacity of 8 and currently has 8 elements.
// List contents: one two three four five six seven eight
//
// Remove elements from the list:
// List has a capacity of 8 and currently has 6 elements.
// List contents: one two three four five seven
//
// Add an element to the end of the list:
// List has a capacity of 8 and currently has 7 elements.
// List contents: one two three four five seven nine
//
// Insert an element into the middle of the list:
// List has a capacity of 8 and currently has 8 elements.
// List contents: one two three four number five seven nine
//
// Check for specific elements in the list:
// List contains "three": True
// List contains "ten": False
语法
Visual Basic(声明)
<ComVisibleAttribute(True)> _
Public Interface IList _
Implements ICollection, IEnumerable
Visual Basic (用法)
Dim instance As IList
C#
[ComVisibleAttribute(true)]
public interface IList : ICollection, IEnumerable

以上是关于C# IList<T>的用法?的主要内容,如果未能解决你的问题,请参考以下文章

List用法与介绍

C# 中的数组如何部分实现 IList<T>?

List

在 C# 中返回 IList<T> vs Array?

数组如何实现 IList<T> 而无需在 C# 中实现属性“Count”? [复制]

C#利用GridView对IList<T>或List<T>进行插入、删除和修改