Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何转换列表<;对象>;要创建继承类的数组吗? 公共数组ListToArray(列表) { //例如,我需要将列表转换为字符串[](不知道对象是字符串) }_C#_Arrays_Types - Fatal编程技术网

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
有什么意义?