假设类MyControl派生于UserControl。
定义了一个函数:
void fun(Control control)
{
//对该control进行转换
MyControl tempControl = (MyControl)control,
}
调用函数fun时传入一个传入一个MyControl类型的对象myControl,结果产生异常信息“无法将类型为“MyControl”的对象强制转换为类型“MyControl”哪位大牛知道原因吗
定义了一个函数:
void fun(Control control)
{
//对该control进行转换
MyControl tempControl = (MyControl)control,
}
调用函数fun时传入一个传入一个MyControl类型的对象myControl,结果产生异常信息“无法将类型为“MyControl”的对象强制转换为类型“MyControl”哪位大牛知道原因吗
{
//对该control进行转换
MyControl tempControl = (MyControl)control,
}
if(c1 != null)
...
关于使用as,返回的是null,但明明传入的是MyControl对象阿
{
public int tag;
public MyControl()
{
tag=1;
} public void function(Control control)
{
MyControl a = (MyControl)control;
Console.WriteLine(a.tag.ToString());
}
}class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
MyControl myControl= new MyControl();
myControl.function(myControl);
}
}
试过了,可以的。
是不是传进去的参数本身不是Mycontrol类型的
{
//对该control进行转换
MyControl tempControl = (MyControl)control,
}在传参的时候已经把MyControl转换成了Control,然后你又把Contorl转换成MyContorl,给为下面的看看行不行
void fun(object control)
{
//对该control进行转换
MyControl tempControl = control as MyControl,
}
应该传入一个传入一个Control类型的对象
而不是MyControl类型的对象
可能改了就没问题了
传入的control在debug下的类型信息如下:
control {FieldControl.FlyUIFieldControl} System.Windows.Forms.Control {FieldControl.FlyUIFieldControl}
+ [FieldControl.FlyUIFieldControl] {FieldControl.FlyUIFieldControl} FieldControl.FlyUIFieldControl
+ base {FieldControl.FlyUIFieldControl} System.ComponentModel.Component {FieldControl.FlyUIFieldControl}
+ AccessibilityObject {ControlAccessibleObject: Owner = FieldControl.FlyUIFieldControl}
。。
其中FlyUIFieldControl就是刚才说的MyControl,继承于UserControl