我知道自COM以来就存在“ I”约定,但是我从未理解为什么没有像.NET之前的所有其他命名约定一样重新考虑它。
从消费角度来看,将接口与例如抽象类分开的唯一一件事是它们可以被多重继承。但是Visual Studio 2003之后的所有内容都在工具提示中显示了类型签名,因此,它与所有其他已废弃的匈牙利符号一样没有用。
我还认为可能是这样,您可以使用相同的名称对接口进行基本实现,例如Message
继承IMessage
,但是大多数.NET库都去掉了在末尾添加“ Base”一词(例如System.Collections.ReadOnlyCollectionBase
),这在语义上更具意义。
COM互操作似乎是另一个可能的原因-但它生成的包装器类并非完全是惯用的.NET,因此我怀疑这是一个美学考虑。
在我的一个较新项目中,我完全放弃了惯例,感觉还不错。有什么我想念的吗?
IList
是List
序列的,连续的,随机访问,增长集合的通用术语。我认为F#的别名List
正确ResizeArray
;这绝对是一个更具描述性的名称。IList
然后可能是List
,所以这似乎也不是原因。