对于C#中的一些点滴你真的理解了吗?
2014-05-24 10:19
183 查看
废话不多说看题目,看看我们自己真的理解了吗?
1、如下代码输出的结果是什么?
public class A{
public virtual void Func(int number=10)
{
Console.WriteLine("Class A Func:"+number);
}
}
public class B{
public virtual void Func(int number=10)
{
Console.WriteLine("Class B Func:"+number);
}
}
void main(arg)
{
B b=new B();
A a=b;
a.Func();
}
输出的答案是:Class B Func:10 ; 你看的没错 并不是Class B Func:20;由于a是一个指向B实例的引用,因此在运行的时候会调用B::Fun。但缺省参数是在编译期决定的。在编译的时候,编译器只知道a是一个类型a的引用,具体指向什么类型在编译期是不能确定的,因此会按照A::Fun的声明把缺省参数number设为10。这一题的关键在于理解确定缺省参数的值是在编译的时候,但确定引用、的虚函数调用哪个类型的函数是在运行的时候。
1、如下代码输出的结果是什么?
public class A{
public virtual void Func(int number=10)
{
Console.WriteLine("Class A Func:"+number);
}
}
public class B{
public virtual void Func(int number=10)
{
Console.WriteLine("Class B Func:"+number);
}
}
void main(arg)
{
B b=new B();
A a=b;
a.Func();
}
输出的答案是:Class B Func:10 ; 你看的没错 并不是Class B Func:20;由于a是一个指向B实例的引用,因此在运行的时候会调用B::Fun。但缺省参数是在编译期决定的。在编译的时候,编译器只知道a是一个类型a的引用,具体指向什么类型在编译期是不能确定的,因此会按照A::Fun的声明把缺省参数number设为10。这一题的关键在于理解确定缺省参数的值是在编译的时候,但确定引用、的虚函数调用哪个类型的函数是在运行的时候。
相关文章推荐
- c#对于如何释放资源的解释,又让我对此语言有更进一步的理解
- 对于C#中委托和事件的理解
- c#GDI+绘图速度的一些差异不理解
- 本人对于“用例”的一些理解和总结
- C#对于接口的一些疑问
- 对于MVC应该理解的一些问题
- 对于C#的一些奢望(对微软的一种幻想,对ASP.NET,WEB,计算机,.NET,以及一些现状的抱怨)
- 偶对学习C#以及理解.Net平台的一些看法(一,Prerequisites)
- 【成长点滴】对SMART原则的一些粗浅理解
- 转 本人对于“用例”的一些理解和总结
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会
- C# ---- 重温的一些点滴
- 偶对学习C#以及理解.Net平台的一些看法(二,Junior Bibliography)
- 对于线程的一些理解
- 从C#谈对面向对象的理解点滴(一)
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会 【zz】
- 对于面向对象的一些通俗的理解。
- C#中关于派生类的构造函数的一些理解
- 转 本人对于“用例”的一些理解和总结