C# 将Object类转化为List<T>类,其中T的类型不是object类型。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 将Object类转化为List<T>类,其中T的类型不是object类型。相关的知识,希望对你有一定的参考价值。

C# 将Object类转化为List<T>类,其中T的类型不是object类型。 例如:定义:list<ValueTable> list = new list<ValueTable>();
obtect obj;
怎么样将obj的值赋给list.

参考技术A 你要先理解泛型集合,泛型的意思就是规范、统一,你要转不同类型的话用arraylist吧
如果非要用List<T>那就用is做判断,用as转换类型
参考技术B ghotos 说的很对,你既然用泛型了,就代表你知道这个类型了,如果你不知道类型,就用List就可以了。
装箱拆箱是指值类型和引用类型之间的转换,这点ghotos 说的不是很正确。
参考技术C protected void Page_Load(object sender, EventArgs e)

List<ValueTable> list = new List<ValueTable>();
object obj = new ValueTable(1);
ValueTable val = obj as ValueTable;
if (val != null)

list.Add(val);


class ValueTable

private int id;
public ValueTable(int id)

this.id = id;

追问

object obj = new ValueTable(1);
具体的含义可以解释一下嘛。谢谢!

追答

你定义了1个List,里面用来装ValueTable类型的对象,你现在有的是obj对象,
那么你在装obj前,你必须确认obj的真实类型必须是ValueTable或者ValueTable的派生类
object obj = new ValueTable(1);
//这表明了obj其实是1个ValueTable类的实例,这样obj转化成ValueTable 时,val才不为null

追问

非常感谢!还有些疑问。list.count不为1,是不是得object obj = new ValueTable(list.count);

追答

new ValueTable(1);
这里的1是,ValueTable实例化的过程中,类中的构造函数
public ValueTable(int id)

this.id = id;

,把类下面的字段id设为1,你可以设为0,10,1000,只要是int类型就OK,
与list.count没有关系.
实例完成后,再隐式转化成Object类型,
与Object obj =(object ) new ValueTable(1);强转一样的效果.

本回答被提问者和网友采纳
参考技术D 你想要干嘛?既然是泛型List,里面只好放这个类型,你add进去的时候,系统会自动尝试转换来着追问

这个我知道,但是我想转化为不同的类型,做一个通用的方法。

追答

那就别用泛型的List了吧,用那种自己手动装箱拆箱的集合。

追问

装箱拆箱我不明白啊,能不能举个实例啊!非常感谢!

追答

呃~或许你可以尝试定义object的list
List objList = new List();
objList.Add(new Class1());
objList.Add(new Calss2());
取的时候
if(objList[0] is Class1)

var _class1 = (Class1)objList[0];

以上代码木有验证

第5个回答  2012-02-10 ValueTable vt = (ValueTable )obj;
list.add(vt );
这样做可行 但是不好

C#中Collection集合怎么转换List集合?请高手指教

public static class Extension//必须先声明一个静态类,类名随意

/// <summary>
/// IList转换为List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="In"></param>
/// <returns></returns>
public static List<T> ToList<T>(this IList In) where T : class

List<T> list = new List<T>();
foreach (var i in In)

T t = i as T;
if (t != null)

list.Add(t);


return list;
参考技术A 试着把Collection遍历一下,添加到list里不就行了。 参考技术B 记得应该有个tolist 方法,试下

以上是关于C# 将Object类转化为List<T>类,其中T的类型不是object类型。的主要内容,如果未能解决你的问题,请参考以下文章

C#如何把List of Object转换成List of T具体类型

java 将Object转成List

list<String>如何转化为Map<String, Object>,list<EmpVO>如何转化为Map<String, Object>

c#中泛型集合怎样写强制类弄转换

C#中Collection集合怎么转换List集合?请高手指教

c# 将 json 数据转换成 List<T> 怎么转换,json 数据格式如下图: