关于C#一个基类继承的问题

[复制链接]
查看11 | 回复4 | 2010-12-2 22:27:25 | 显示全部楼层 |阅读模式
namespace hello_world
{
class Program:System.Xml.Linq.XDocument
单继承
{
public static void Main(string[] args)
{
string m = "hi";
string c = m;
int n = 1;
string d = n.ToString();
Object类的方法
System.Console.ReadLine();
}
}
}
上段代码是一个完整的代码,而且编译运行都正常!
注意点是:
1、本段代码没有导入任何的命名空间;
2、本段代码中自定义的Program类是继承另外一个类的,即System.Xml.Linq.XDocument ;
问题在于:
不知道c#中所有自定义的类,如果没有做任何显式申明是不是默认继承Object类的?即便如此,我首先让自定义的Program类显式继承System.Xml.Linq.XDocument 类, 这样按照c#单向继承的原则,Program类就不可能在继承其他任何类了,这样排除了继承Object类的可能性,
但是从后面的代码string d = n.ToString(); 可以看到变量n使用了Object类的ToString方法,这个方法是Object类才具有的,继承的System.Xml.Linq.XDocument 类中是没有这个方法的,为什么这个程序可以正常编译和执行???

回复

使用道具 举报

千问 | 2010-12-2 22:27:25 | 显示全部楼层
C#中所有类均从Object类派生,这也就是说System.Xml.Linq.XDocument 类也是Object的子类。当你自定义的Person类调用ToString方法时,要按继承关系从上向下依次寻找,如果子类(或子类的子类)均没有对ToString方法进行重写,默认使用Object类中的ToString方法。
回复

使用道具 举报

千问 | 2010-12-2 22:27:25 | 显示全部楼层
Object....System.Xml.Linq.XDocumentProgram从上到下依次继承,可以看出Object是所有对象的基类,所以也可以理解了Program继承了Object
回复

使用道具 举报

千问 | 2010-12-2 22:27:25 | 显示全部楼层
tostring你可以在任何时候用,不信你可以试试,这是string的成员
回复

使用道具 举报

千问 | 2010-12-2 22:27:25 | 显示全部楼层
3.0呀,,太先进了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行