C# 如何转换列表<;对象>;要创建继承类的数组吗? 公共数组ListToArray(列表) { //例如,我需要将列表转换为字符串[](不知道对象是字符串) }
我有一个物品清单。 相同类型的所有对象。 但对我来说,这种类型是未知的。 例如,类型可以是字符串或任何其他类。 我需要将此列表转换为继承类的数组。C# 如何转换列表<;对象>;要创建继承类的数组吗? 公共数组ListToArray(列表) { //例如,我需要将列表转换为字符串[](不知道对象是字符串) },c#,arrays,types,C#,Arrays,Types,我有一个物品清单。 相同类型的所有对象。 但对我来说,这种类型是未知的。 例如,类型可以是字符串或任何其他类。 我需要将此列表转换为继承类的数组。 我该怎么做?对于您的示例,这应该有效(如果是字符串) 您可以在“选择”中进行其他铸造,如: var stringArray = list.Select(x=>x.ToString()).ToArray(); 使用as可以将对象强制转换为所需的类型,如果无法强制转换,则将返回null对于您的示例,这应该可以工作(如果是字符串) 您可以在“选择”
我该怎么做?对于您的示例,这应该有效(如果是字符串) 您可以在“选择”中进行其他铸造,如:
var stringArray = list.Select(x=>x.ToString()).ToArray();
使用
as
可以将对象强制转换为所需的类型,如果无法强制转换,则将返回null对于您的示例,这应该可以工作(如果是字符串)
您可以在“选择”中进行其他铸造,如:
var stringArray = list.Select(x=>x.ToString()).ToArray();
使用as
可以将对象强制转换为所需类型,如果无法强制转换,则该对象将返回null
var stringArray = list.Select(x=> x as yourType).ToArray();
var result=list.Cast().ToArray();
或者对于泛型类型参数,可以使用
var result = list.Cast<Object>().ToArray();
var result=list.Cast().ToArray();
您可能想要这个
var stringArray = list.Select(x=> x as yourType).ToArray();
var result=list.Cast().ToArray();
或者对于泛型类型参数,可以使用
var result = list.Cast<Object>().ToArray();
var result=list.Cast().toaray();
如果您有一个类型
实例(在运行时已知),那么您不能强制转换它,这样做实际上没有意义。你必须使用反射
如果您有一个泛型类型参数T
,则可以按如下方式强制转换它:
var result = list.Cast<T>().ToArray();
如果您有一个
类型
实例(在运行时已知),那么您不能强制转换它,这样做实际上没有意义。你必须使用反射
如果您有一个泛型类型参数T
,则可以按如下方式强制转换它:
var result = list.Cast<T>().ToArray();
您可以使用
Array.CreateInstance
在运行时创建所需类型的数组,然后使用Array.Copy
填充它,例如:
var instances = list.OfType<T>().ToArray();
公共数组ListToArray(列表)
{
//假设列表中至少有一个元素
数组arr=Array.CreateInstance(列表[0].GetType(),list.Count);
Copy(list.ToArray(),arr,list.Count);
返回arr;
}
现在
ListToArray(新列表{1,2})
将返回一个int[]
,ListToArray(新列表{1,2})
将返回一个字符串[]
(显然键入的是数组
).您可以使用Array.CreateInstance
在运行时创建所需类型的数组,然后使用Array.Copy
,例如:
var instances = list.OfType<T>().ToArray();
公共数组ListToArray(列表)
{
//假设列表中至少有一个元素
数组arr=Array.CreateInstance(列表[0].GetType(),list.Count);
Copy(list.ToArray(),arr,list.Count);
返回arr;
}
现在
ListToArray(新列表{1,2})
将返回一个int[]
,ListToArray(新列表{1,2})
将返回一个string[]
(显然键入的是Array
)。您如何知道转换到哪种类型?您是否有类型
实例?或者泛型类型参数T
?我建议您看看答案。即使可以检查对象的类型,也最好在此处使用泛型方法。即使可以这样做,如何使用数组,也不知道它是什么类型。它会变得没用吗?@Liam这是使用DragDrop所必需的。你怎么知道该投哪种类型的?您是否有类型
实例?或者泛型类型参数T
?我建议您看看答案。即使可以检查对象的类型,也最好在此处使用泛型方法。即使可以这样做,如何使用数组,也不知道它是什么类型。它将变得无用?@Liam它是DragDrop所必需的。类型可以是例如字符串,或任何其他class@Liam这是一个例子注:不知道对象是strings@SriramSakthivel所以使用as
您将调用对象上的ToString
,如果它是字符串,它将返回它的value@wudzik你不明白这个问题。如果List是double,则OP需要转换为List
是我的理解。类型可以是例如字符串,或任何其他class@Liam这是一个例子注:不知道对象是strings@SriramSakthivel所以使用as
您将调用对象上的ToString
,如果它是字符串,它将返回它的value@wudzik你不明白这个问题。如果List是double,那么OP需要转换为List
是我所理解的。在List
的实例上调用Cast
有什么意义?在List
的实例上调用Cast
有什么意义?