首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

提问 有关问题标签用户 C#多态中new 和(className)的区别

2014-01-08 
提问 问题标签用户 C#多态中new 和(className)的区别class A{public virtual void test1(){cnosole.writel

提问 问题标签用户 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了
[解决办法]

引用:
Quote: 引用:

那就是一样的了,你要是调同样的方法都是调用B类的那个test1 in B 因为他被overwrite了


就没有别的不同?只是语法上面的表达不同?


a1,a2使用起来一样的。

如果要扣细了的话,那你先new 一个B, 然后又 A a2= (A)b;
中间不是多了一步吗?而且多了一个变量b。
其他没什么。

热点排行