gpt4 book ai didi

c# - 基类数组到派生类数组的转换

转载 作者:行者123 更新时间:2023-11-30 13:46:19 25 4
gpt4 key购买 nike

在 C# 中是否可以将基类对象数组显式转换为它的派生类对象数组之一?我有从 A 类派生的 C 类,我试图将基类对象数组转换为派生类对象数组,但它返回一个空值。

public interface I
{
public string Name;
public string Id;
}
public class A
{
public string name;
public string id;
}

public class B: A,I
{
public string Name
{
get { return name; }
set{name= value;}
}

public string Id
{
get { return id; }
set{id= value;}
}
}


A[] baseClassList= GetValues();
B[] derivedClassList= baseClassList as B[];---THIS IS RETURNING NULL

我该如何解决这个问题?感谢您的帮助。

最佳答案

您可以很容易地使用 Linq 从 baseClassList 创建一个 B[],但它不会像强制转换那么简单。

B[] derivedClassList = baseClassList.OfType<B>().ToArray();

编辑:或者 - 如果您想转换数组的内容,我建议您使用复制构造函数。

public B(A source)
{
Name = source.name;
Id = source.id;
}

然后你可以这样转换:

B[] derivedClassList = baseClassList.Select(e => e is B ? (B)e : new B(e)).ToArray();

关于c# - 基类数组到派生类数组的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22179680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com