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.
如果非要用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);强转一样的效果.
这个我知道,但是我想转化为不同的类型,做一个通用的方法。
追答那就别用泛型的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];
以上代码木有验证
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具体类型
list<String>如何转化为Map<String, Object>,list<EmpVO>如何转化为Map<String, Object>