CA1023:索引器不应该是多维的
索引器(即索引属性)应使用单个索引。 多维索引器可以显着降低可用性 图书馆。如果设计需要多个索引,请重新考虑 类型是否表示逻辑数据存储。如果没有,请使用 方法
要修复违反此规则的行为,请将设计更改为使用单个整数或字符串索引,或使用方法代替索引器。
这对我来说似乎很奇怪,为什么这会对任何事情产生重大影响?除了使多维索引更不直观之外?
Change the design to use a string
?用它做什么?在另一端解析数字并输掉强力输入?
有人可以告诉我多维索引器出现问题的原因吗?
答案 0 :(得分:5)
如果设计需要多个索引,请重新考虑是否有类型 表示逻辑数据存储。如果没有,请使用方法。
问题是索引器不能被特别命名(除了@volpav注释,用于与本身不支持它们的语言接口 - 默认情况下,它们被称为Item
),而方法必须是。{这意味着如果客户端没有立即明显(“表示逻辑数据存储”),则可能在猜测索引器的含义时遇到问题。如果索引器具有多个参数和/或存在索引器的多个重载,则这尤其令人烦恼。当然,命名索引器参数可以帮助解决问题(虽然索引器本身不能在C#中专门命名),但是考虑到方法可以暗示返回值和的含义在名称中的参数方法本身(考虑GetCustomersByCountryAndAge vs this [string,int])。这在浏览源代码时极大地提高了可读性。
为索引器编写精心编写的XML文档也会有所帮助。
要修复违反此规则的行为,请将设计更改为单独使用 整数或字符串索引
这个措辞有点差的句子似乎是建议结合观察到int和string是索引器最常见的参数类型。它应该只是阅读“改变设计以使用单独的索引。”