由于String实现了IEnumerable<char>
,我希望在Intellisense中看到Enumerable扩展方法,例如,在
String s = "asdf";
s.
我原本希望看到.Select<char>(...)
,.ToList<char>()
等。
然后我很惊讶地看到扩展方法做实际上对字符串类起作用,它们只是没有出现在Intellisense中。有人知道为什么吗?
这可能与this问题有关。
答案 0 :(得分:15)
这是通过明确的设计。问题是虽然String绝对实现了IEnumerable<T>
,但大多数人并没有想到它,或者更重要的是以这种方式使用它。
String的方法数量相当少。最初我们没有过滤String的扩展方法,结果是很多负面反馈。使用正确的导入,它有时几乎使方法数量增加了两倍。显示所有扩展方法后,人们常常看不到他们在噪声中寻找的String方法。
字符串是......简单类型,最好以这种方式查看:)
完全可以在字符串上调用扩展方法。它很可能不会出现在intellisense中。
编辑:字符串实际上有很多方法。但由于它们中的许多都是超载,它们在智能感知中崩溃了。
答案 1 :(得分:2)
有关信息,这在VS2010中已经发生了变化(至少在beta 2中)。看起来这个过滤已被删除(可能是它引起了太多混乱),现在这些方法与扩展方法字形一起可见。
答案 2 :(得分:-2)
应该。
For example you can write it public static string myExtensionMethod(this String yuppi){
}
然后它应该在那里。