可枚举的 LINQ 扩展隐藏在字符串中......为啥以及如何? [复制]
Posted
技术标签:
【中文标题】可枚举的 LINQ 扩展隐藏在字符串中......为啥以及如何? [复制]【英文标题】:Enumerable LINQ extensions are hidden on strings... why and how? [duplicate]可枚举的 LINQ 扩展隐藏在字符串中......为什么以及如何? [复制] 【发布时间】:2011-03-11 14:22:59 【问题描述】:可能重复:Why doesn’t VS 2008 display extension methods in Intellisense for String class
大家好。
昨天我注意到Enumerable
LINQ 扩展隐藏在字符串上(我的意思是对智能感知隐藏)。
我们都知道字符串是一个IEnumerable<char>
,所以它应该自动获得 Enumerable 扩展,并且如果你使用它们实际上可以编译和工作,但是为什么 .NET 开发人员决定对智能感知隐藏它们呢?
最后,我们如何隐藏特定类型的扩展方法?
附: 对不起我的英语不好......
编辑: 我忘了说我的目标是 VS 2008 上的 .net 3.5
编辑2: 这里有 2 张图片说明发生了什么:
字符串智能感知:
Intellisense on string http://img690.imageshack.us/img690/10/stringintelli.png
IEnumerable 上的智能感知:
【问题讨论】:
您是否将 System.Core 作为程序集引用? 我不知道它为什么被隐藏,但我可以验证扩展方法在 VS 2008 中对字符串是隐藏的,但在 VS 2010 中没有。 另见此 Usenet 线程抓取:eggheadcafe.com/software/aspnet/32196968/…(其中一些熟悉的名字......) 另请注意,使用 VS2008 和 ReSharper 5,您确实会显示它们。 @AakashM:谢谢你的澄清 【参考方案1】:不在我的 Visual Studio 副本上(那是 2010 年,安装了 ReSharper):
alt text http://codeka.com/tmp/string-enumerable.png
也许您忘记了顶部的using System.Linq;
?或者也许 ReSharper 正在添加它们,不确定...
【讨论】:
我编辑了我的问题。我正在使用 VS2008,顶部有“使用 System.Linq”。【参考方案2】:当我有一个字符串 s
并输入 s.
时,我会得到所有的扩展方法(如 FirstOrDefault 等)。
我使用 VS2010 Express 进行了检查。
您当然应该在范围内拥有static class System.Linq.Enumerable
。
至于 How 部分,我猜想在 String 上使用了类似 this attribute 的东西。但是清除 C# 的“隐藏高级”选项并没有带来任何变化,所以它不完全是这个属性,而是类似的东西。
至于为什么部分,不知道。但有趣的是它已针对 Fx4 进行了更改
【讨论】:
对不起,我编辑了我的问题,我正在使用 VS2008 好的,已验证。在 VS2008 中,方法不出现在智能感知中。 哦,好吧,不只是我 :) 。有什么想法吗?以上是关于可枚举的 LINQ 扩展隐藏在字符串中......为啥以及如何? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
LINQ 在使用 .Where() 循环和修改可枚举过滤器中的项目后,项目消失了 - 为啥? [复制]