Questions tagged «extension-methods»

扩展方法是某些语言的语言功能,例如Swift,Visual Basic.NET和C#。扩展方法使您可以将方法“添加”到现有类型,而无需创建新的派生类型,重新编译或修改原始类型。

6
为什么从扩展类中调用扩展方法需要'this'关键字
我为ASP.NET MVC ViewPage创建了扩展方法,例如: public static class ViewExtensions { public static string Method<T>(this ViewPage<T> page) where T : class { return "something"; } } 从视图(从派生ViewPage)中调用此方法时,除非得到使用关键字进行调用的错误,否则会出现错误“ CS0103:名称“方法”在当前上下文中不存在” this: <%: Method() %> <!-- gives error CS0103 --> <%: this.Method() %> <!-- works --> 为什么this需要关键字?还是没有它就可以工作,但是我缺少了什么? (我认为此问题一定是重复的,但找不到) 更新: 正如Ben Robinson所说,调用扩展方法的语法只是编译器糖。那么为什么编译器在不需要this关键字的情况下不能自动检查当前类型的基本类型的扩展方法呢?

6
反思以识别扩展方法
在C#中,有没有一种使用反射的技术来确定某个方法是否已作为扩展方法添加到类中? 给定一种扩展方法(例如以下所示),是否可以确定Reverse()已添加到字符串类? public static class StringExtensions { public static string Reverse(this string value) { char[] cArray = value.ToCharArray(); Array.Reverse(cArray); return new string(cArray); } } 我们正在寻找一种在单元测试中确定开发人员是否适当添加了扩展方法的机制。尝试执行此操作的一个原因是,开发人员可能会将类似的方法添加到实际类中,如果是这样,则编译器会选择该方法。


30
您最喜欢的不是内置的LINQ to Objects运算符是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 改善这个问题 使用扩展方法,我们可以编写方便的LINQ运算符来解决通用问题。 我想听听System.Linq命名空间中缺少哪些方法或重载以及如何实现它们。 最好使用可能使用现有方法的简洁明了的实现。

30
您所看到的扩展方法的最佳或最有趣的用法是什么?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我开始真的很喜欢扩展方法...我想知道她是不是偶然发现了一个真正让他们震惊或只是聪明的人。 我今天写的一个例子: 根据其他用户的评论进行了编辑: public static IEnumerable<int> To(this int fromNumber, int toNumber) { while (fromNumber < toNumber) { yield return fromNumber; fromNumber++; } } 这允许将for循环编写为foreach循环: foreach (int x in 0.To(16)) { Console.WriteLine(Math.Pow(2, x).ToString()); } 我等不及要看其他示例了!请享用!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.