-1

我在看

的所有(或在大多数情况下)派生类System.Exception,无论是用户定义的还是系统定义的,在结构上都与它们的基类等价System.Exception,尽管它们在名义上不是等价的,这是否正确?

谢谢。

4

2 回答 2

1

不,当我从 System.Exception 继承时,我将新变量添加到派生类。一些股票例外也是如此。

于 2017-05-22T18:52:00.663 回答
1

没有必要(而且可能根本没有)。根据定义,任何继承 System.Exception 的类都将实现 System.Exception 实现的所有内容。但是,它也会有自己的差异。

我们来看一个简单的例子:ArgumentNullException。这是一个系统命名空间异常,因此由 C# 的创建者定义。将System.ExceptionSystem.ArgumentNullException进行比较显示了差异。例如:

ArgumentNullException 有一个带有签名 ArgumentNullException(String, String) 的附加构造函数,允许您传入 null 参数的名称。

ArgumentNullException 有一个附加属性:ParamName,用于保存为 null 并导致异常的参数的名称。

由于我只是在看最高级别,因此它们之间的常用方法的实现方式也可能存在差异。

可以这么说,一个子类很少会与它的父类看起来相同。

于 2017-05-22T19:00:56.540 回答