提问 问题标签用户 C#多态中new 和(className)的区别 class A
{
public virtual void test1()
{
cnosole.writeline("test1 in A");
}
}
class B
{
public override void test1()
{
cnosole.writeline("test1 in B");
}
}
main()
{
B b=new B();
A a1=new B();
A a2=(A)b;
}
请问各位大神A a1=new B()、和A a2=(A)b,有什么区别?
分享到:更多
------解决方案-------------------- new是创建新实例,第二个是转换,这样a2和b是同一个东西,修改任何一个,都会影响到另一个 ------解决方案-------------------- 那就是一样的了,你要是调同样的方法都是调用B类的那个test1 in B 因为他被overwrite了 ------解决方案--------------------
a1,a2使用起来一样的。
如果要扣细了的话,那你先new 一个B, 然后又 A a2= (A)b;
中间不是多了一步吗?而且多了一个变量b。
其他没什么。