在C#中抛出异常后返回语句
发布时间:2020-12-15 08:22:01 所属栏目:百科 来源:网络整理
导读:Systems.Collections.Generic.Dictionary类的以下函数在抛出异常后有返回语句,有没有人知道为什么? public TValue this[TKey key] { get { int i = FindEntry(key); if (i = 0) return entries[i].value; ThrowHelper.ThrowKeyNotFoundException(); **retur
Systems.Collections.Generic.Dictionary类的以下函数在抛出异常后有返回语句,有没有人知道为什么?
public TValue this[TKey key] { get { int i = FindEntry(key); if (i >= 0) return entries[i].value; ThrowHelper.ThrowKeyNotFoundException(); **return default(TValue);** } set { Insert(key,value,false); } } 解决方法
即便如此
ThrowHelper.ThrowKeyNotFoundException(); 当然会抛出异常,编译器不够复杂,无法证明它永远不会做任何其他事情.而且由于无法证明函数永远不会返回,因此必须假设它可以返回. Eric Lippert刚刚在他的博客上完成了一个关于这个问题的“永不言败”的迷你系列. http://blogs.msdn.com/b/ericlippert/archive/2011/02/21/never-say-never-part-one.aspx 事实证明,这是Halting Problem的一个简单案例,已经证明它在图灵机上是不可判定的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |