我在看
的所有(或在大多数情况下)派生类System.Exception
,无论是用户定义的还是系统定义的,在结构上都与它们的基类等价System.Exception
,尽管它们在名义上不是等价的,这是否正确?
谢谢。
我在看
的所有(或在大多数情况下)派生类System.Exception
,无论是用户定义的还是系统定义的,在结构上都与它们的基类等价System.Exception
,尽管它们在名义上不是等价的,这是否正确?
谢谢。
不,当我从 System.Exception 继承时,我将新变量添加到派生类。一些股票例外也是如此。
没有必要(而且可能根本没有)。根据定义,任何继承 System.Exception 的类都将实现 System.Exception 实现的所有内容。但是,它也会有自己的差异。
我们来看一个简单的例子:ArgumentNullException。这是一个系统命名空间异常,因此由 C# 的创建者定义。将System.Exception与System.ArgumentNullException进行比较显示了差异。例如:
ArgumentNullException 有一个带有签名 ArgumentNullException(String, String) 的附加构造函数,允许您传入 null 参数的名称。
ArgumentNullException 有一个附加属性:ParamName,用于保存为 null 并导致异常的参数的名称。
由于我只是在看最高级别,因此它们之间的常用方法的实现方式也可能存在差异。
可以这么说,一个子类很少会与它的父类看起来相同。