nolongerneedtogrowarray}i元素位置有无限多个,但我们无法轻松地全部予以支持。事实上我们无法全部支持。此外用户也许会指定一个非法位置——任何小于或等于0的位置都是不合法的,我们该如何处理这两种无效状态?C#程序设计的习惯是,通过异常的引发来报告程序中的不正常情况。但是抛出哪个异常呢?遇到无效位置和不被支持的位置时,是否应该抛出不同的异常?答案并无唯一性,谁来决定呢?如果每个接口的实现可以自行决定抛出什么异常,那就几乎不可能安全地以一般化方式对接口进行编程。举个例子,如果要写出以下代码:INumericSequenceins=oasINumericSequence;if(ins!=null)elem=ins[pos2];我们应当确知:每个indexer实现品都以完全相同的方式回报无效位置。这意味着接口定义式必须决定在什么条件下抛出异常以及抛出哪一种异常。不幸的是我们只能通过文档加以说明。C#无法直接将成员和其所能抛出的异常关联起来。仅供个人用于学习、研究;不得用于商业用途。Forpersonaluseonlyinstudyandresearch;mercialuse.NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;merciales. толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. 以下无正文Forpersonaluseonlyinstudyandresearch;mercialuse