extension-methods相关内容

C#4 中的 dynamic 关键字是否支持扩展方法?

我听了关于 C#4 的 dynamic 关键字的演讲,我想知道......这个功能是否与其他 .NET 功能,例如它是否支持扩展方法? public static class StrExtension {公共静态字符串两次(此字符串 str){ return str + str;}}...动态 x = "哟";x.两次();//这会起作用吗? 注意:这个问题是在 C#4 发布之前提出的,这就是 ..
发布时间:2021-12-24 23:56:57 C#/.NET

FindAll 与 Where 扩展方法

我只想知道“FindAll"是否会比“Where"扩展方法更快,为什么? 示例: myList.FindAll(item=> item.category == 5); 或 myList.Where(item=> item.category == 5); 哪个更好? 解决方案 好吧,FindAll 将匹配的元素复制到一个新列表中,而 Where 只是返回一个懒惰的计算结果序列 ..
发布时间:2021-12-23 22:02:18 C#/.NET

结构上的扩展方法

你能在结构中添加扩展方法吗? 解决方案 是的,您可以在结构上添加扩展方法.根据扩展方法的定义,您可以轻松实现它.下面是 int 上的扩展方法示例 命名空间扩展方法{公共静态类 IntExtensions{public static bool IsGreaterEqualThan(this int i, int value){返回 i >= 值;}}} ..
发布时间:2021-12-23 17:19:32 C#/.NET

使用扩展方法引发 C# 事件 - 是不是很糟糕?

我们都熟悉可怕的 C# 事件声明.为了确保线程安全,标准是这样写: 公共事件EventHandlerSomethingHappened;protected virtual void OnSomethingHappened(EventArgs e){var 处理程序 = 发生了什么事;如果(处理程序!= null)处理程序(这个,e);} 最近在这个板上的其他一些问题(我现在找不到)中,有人指出 ..
发布时间:2021-12-19 22:54:59 C#/.NET

来自扩展方法的 ArgumentNullException 或 NullReferenceException?

当在空实例上调用扩展方法时(扩展方法不允许),您认为抛出的最佳异常类型是什么?由于扩展方法只不过是静态方法,您可能会争辩说它应该是 ArgumentNullException,但另一方面,它们像实例方法一样使用,因此使用 NullReferenceException 可能更自然.我们来看下面的例子: public static string ToInvariantString(这个IFormat ..
发布时间:2021-12-17 16:56:38 C#/.NET

将字符串转换为可为空类型(int、double 等...)

我正在尝试进行一些数据转换.不幸的是,大部分数据都在字符串中,它应该是 int 或 double 等...... 所以我得到的是这样的: 双倍?金额 = Convert.ToDouble(strAmount); 这种方法的问题是如果 strAmount 为空,如果它为空,我希望它为空,所以当我将它添加到数据库中时,该列将为空.所以我最终写了这个: 双倍?金额 = 空;if(strAmo ..
发布时间:2021-12-15 09:45:39 C#/.NET

如何获得扩展方法来更改原始对象?

我希望能够编写扩展方法,以便我可以说: lines.ForceSpaceGroupsToBeTabs(); 代替: lines = lines.ForceSpaceGroupsToBeTabs(); 但是,以下代码当前输出: ....one........二 代替: 音调TT2 我必须在以下代码中更改什么才能使其输出: 音调TT2 (注意,对于可见性,.= space, T = ..
发布时间:2021-12-11 19:41:11 C#/.NET

扩展方法如何工作?

我想在 Unity3d 中为 Vector3 类制作一个扩展方法.但我似乎不太明白.这就是我所拥有的: public static class ExtensionMethods{公共静态 Vector3 MaxValue(this Vector3 _vec3){返回新的 Vector3(float.MaxValue,float.MaxValue,float.MaxValue);}} 现在我想用 ..
发布时间:2021-12-11 16:45:31 C#/.NET

在 Kotlin 中尝试资源

当我尝试在 Kotlin 中编写 Java try-with-resources 代码的等效代码时,它对我不起作用. 我尝试了以下不同的变体: try (writer = OutputStreamWriter(r.getOutputStream())) {//...} 但两者都不起作用. 有谁知道应该用什么代替?显然 Kotlin 语法 没有定义这样的结构,但也许我错过了某物.它定 ..
发布时间:2021-12-10 17:22:03 其他开发

List 的 Last() 扩展方法的性能如何?

我真的很喜欢 Last() 并且会一直将它用于 Lists.但由于它似乎是为 IEnumerable 定义的,我猜它首先枚举枚举 - 这应该是 O(n) 而不是 O(1) 直接索引 a 的最后一个元素列表. 标准 (Linq) 扩展方法是否意识到这一点? C++ 中的 STL 通过用于迭代器等的完整“继承树"意识到这一点. 解决方案 我刚刚使用了 参考源 查看 Last 的代码 ..
发布时间:2021-12-09 11:49:55 C#/.NET

解决扩展方法/LINQ 歧义

我正在为 ReSharper 4 编写插件.为此,我需要参考 ReSharper 的几个程序集.其中一个程序集 (JetBrains.Platform.ReSharper.Util.dll) 包含一个 System.Linq 命名空间,其中包含 System.Core 已提供的扩展方法的子集. 当我编辑代码时,它会在这些扩展之间产生歧义,例如,我无法使用 OrderBy.我怎么能解决这个问题 ..
发布时间:2021-12-09 11:44:59 C#/.NET

.NET 列表Concat 与 AddRange

AddRange 和 Concat 在泛型上的函数列表?一个比另一个推荐吗? 解决方案 它们的语义完全不同. AddRange 通过向列表添加其他项目来修改列表. Concat 返回一个包含列表和其他项目的新序列,而不修改列表. 选择具有您想要的语义的任何一个. ..
发布时间:2021-12-09 11:21:52 C#/.NET

扩展方法语法与查询语法

我正在尝试了解是否有时间将标准 linq 关键字或 linq 扩展方法与 lambda 表达式一起使用.他们似乎做同样的事情,只是写法不同.纯粹是风格问题吗? var query = from p in Products其中 p.Name.Contains("foo")orderby c.Name选择 p;//或使用扩展方法:var 查询 = 产品.Where(p => p.Name.Conta ..
发布时间:2021-12-09 11:20:51 C#/.NET