Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 儿童问题_C#_.net_Arrays_Forms_Casting - Fatal编程技术网

C# 儿童问题

C# 儿童问题,c#,.net,arrays,forms,casting,C#,.net,Arrays,Forms,Casting,我与mdi儿童有铸造问题 这项工作: MyForm mf = (MyForm)this.ActiveMdiChild; 这不起作用: MyForm[] mfs = (MyForm[])this.MdiChildren; 父窗体中的所有窗体都是MyForm的实例,但我无法成功转换它们。这意味着我不能使用MyForm提供的任何方法,因为它们只是表单对象。我可以做些什么来纠正这个问题?以下是您可以做的 IEnumerable<MyForm> mfs = this.MdiChildren

我与
mdi儿童
有铸造问题

这项工作:

MyForm mf = (MyForm)this.ActiveMdiChild;
这不起作用:

MyForm[] mfs = (MyForm[])this.MdiChildren;

父窗体中的所有窗体都是
MyForm
的实例,但我无法成功转换它们。这意味着我不能使用
MyForm
提供的任何方法,因为它们只是表单对象。我可以做些什么来纠正这个问题?

以下是您可以做的

IEnumerable<MyForm> mfs = this.MdiChildren.Cast<MyForm>();
IEnumerable mfs=this.MdiChildren.Cast();
该属性返回一个
表单
实例数组,它与
MyForm
实例数组不同(不能直接转换为
MyForm
实例数组)

您可以使用LINQ的方法执行显式转换:

MyForm[] mfs = this.MdiChildren.Cast<MyForm>().ToArray();
MyForm[]mfs=this.mdichilds.Cast().ToArray();

为什么需要从MDI子项中单独收集(数组)?为什么不迭代该集合并根据需要单独强制转换?