“抛出新的NotImplementedException();”究竟做了什么?
我有一个inheritance自’a’类的’b’类。 在类’a’中,如果事件不为null,则会有一些代码执行操作。 我需要在应用程序的特定时间内在类’b’中触发该代码。 所以在’b’中我订阅了一个新的Handler(事件)。
如果我使用throw new NotImplementedException();
在类’b’中’自动’保留自动生成的事件throw new NotImplementedException();
行,代码按预期工作/运行。 一旦我删除了thowexception,应用程序就不再按预期工作了。
那么,除了抛出exception之外,什么是throw new NotImplementedException
呢?
我意识到我可能在这一点上试图以错误的方式解决我的编码问题,我相信我会找到一个更好的方法(我还在学习),但我的问题仍然存在。 为什么这一行改变了代码的结果?
编辑:我认为我对我的代码并不十分具体。 不幸的是,由于严格的政策,我不可能。 我在课堂上’a’是一个if语句。
if (someEvent != null)
当代码’工作’时,if语句返回true。 当它没有按预期工作时,它返回’false’。 在类’b’中,应用程序’工作’的唯一时间(或if语句返回true)是我throw new NotImplementedException();
在我附加新事件时自动生成的类’b’事件方法中的行。
这只是一个例外,至于为什么它意味着你的应用程序“工作”完全依赖于处理任何exception的代码。
它不是一个“特殊”exception,而是一个普通的exception(除了像其他Exception
一样从Exception
派生)。 您倾向于将代码生成视为占位符,以实现其内部的成员。 这样做要比代码生成试图理解成员结构以输出编译代码容易得多。
当你说“不再按预期工作”时,我假设它编译。 如果删除它会阻止代码编译,那么很可能你有一个关于返回值的编译错误。
也许触发事件的代码需要处理程序的某种响应,或者如果没有处理程序或exception发生,则默认响应并继续。 在你的情况下,有一个处理程序,没有例外,所以它期望更好的响应?
完全猜测。
如果您需要在b
使用代码,请考虑使用protected
代码的方法,并在需要override
行为时选择virtual
。
想一想:如果你想用以下方法添加两个整数怎么办…
private int Add(int x, int y) { }
…并且没有内部代码来执行此操作(该方法甚至不返回整数)。 这就是NotImplementedException
的用途。
NotImplementedException
是一种声明interface
或基class
的特定方法根本不在您的类型中实现的方法。 这是E_NOTIMPL
错误代码的exceptionforms。
通常,实现不应NotImplementedException
除非它是特定interface
的特定支持方案。 在绝大多数情况下,情况并非如此,类型应完全实现interfaces
。
就它正在做什么而言。 它只是抛出exception。 很难说除非你给我们提供更多的信息,否则为什么程序会在exception情况下保持function并在没有它的情况下中断。
NotImplementedException
只是一个exception,当您尝试执行的代码尚未编写时使用。 它通常在片段中用作占位符,直到您填写实际代码生成的任何内容。
使用NotImplementedException
而不是空代码块是一个好习惯,因为它会非常明显地抛出一个错误,提醒您代码部分尚未完成。 如果它是空白的,那么该方法可能会运行并且不会发生任何事情,并且有时候调试很麻烦。
上述就是C#学习教程:“抛出新的NotImplementedException();”究竟做了什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961716.html