extension-methods相关内容
我想写的.NET String类的扩展方法。我想这是对分割方法的特殊varation - 一个接受一个转义字符,以prevent分割字符串时,转义字符分隔符之前使用。 什么是写这个的最好方法是什么?我很好奇的最佳非正则表达式的方式来对待它。 大一些的签名一样...... 公共静态字符串[]斯普利特(此字符串输入,字符串分隔符,字符escapeCharacter) { // ... }
..
更新:查看这个问题的底部为一个C#的解决方法 您好, 考虑下面的扩展方法: 公共静态布尔HasFlags< T>(这件T值,T标志) 其中T:System.Enum { // ... } 这个意愿,大家可能都知道,扔在编译时错误,因为一个类,一般是不允许从 System.Enum 继承。问题是,使用枚举关键字事实上确实从 System.Enum 继承指定的
..
我在寻找一些优点和缺点,使用了静态工具类扩展方法在C#应用程序。 例如,在扩展方法列加是通过调用类的名字,而不是像“StringUtils的”东西的舒适。但是一个反面的是,它可以模糊分辨什么是在框架中,什么不是行。 解决方案 我会说一个的 PRO 的是,它模糊了区别什么是在框架中,什么不是行:可以用自己的code一样自然框架code,对框架类型进行操作。 扩展方法不宜随意使用的,当然 -
..
扩展方法可以分配给匹配的对象在他们的使用,这样的代表: 静态类FunnyExtension { 公共静态字符串双(此字符串str){返回STR + STR; } 公共静态INT双(这个INT NUM){返回NUM + NUM; } } FUNC<字符串> aaMaker =“一”。双; FUNC<字符串,字符串>倍频= FunnyExtension.D
..
是否有经验,以帮助确定在什么情况下使用的规则?我应该preFER一个比其他大部分时间? 谢谢! 解决方案 扩展方法是有用的,但它们是难以发现通过IDE比常规方法中,由于它们没有附加到原始类和有没有线索到了code他们可能驻留。有一些通常你会使用扩展方法,如果你只添加功能众所周知,很好用的类或接口,比如.NET基类,你没有访问到$ C $下。扩展方法也有在约束你不仅要有原装配,你必须有一个与它的
..
我怎么能写一个System.Drawing.Bitmap转换为字节数组的扩展方法?为什么不: <扩展()> _ 公共职能的toByteArray(BYVAL形象System.Drawing.Bitmap)为字节() 使用MS =新的MemoryStream() image.Save(MS,image.RawFormat) 返回ms.ToArra
..
我知道这是可能的LINQ到SQL和我见过的点点滴滴,导致我相信这是可能的EF。是否有一个扩展,有可以做这样的事情: VAR peopleQuery = Context.People.Where(P => p.Name ==“吉姆”); peopleQuery.DeleteBatch(); 其中, DeleteBatch 刚拿起拆开peopleQuery并创建一个SQL语句删除所
..
刚刚遇到以 //在应用程序的开始 MyClass的实例=新MyClass的(); instance.MyMethod(); instance.MyMethod(); //比第一次调用速度更快,因为现在它的回暖。 难道我们真的有这样的热身理论在C#中?如果是的话,为什么(会出现什么CLR做准备活动时)?而就是一切相同的,如果这个方法是一个扩展一(静态的)? 解决方案 如果通过“热身”你是指JI
..
在什么时候使用扩展方法有意义吗? 在是否加入扩展方法,一种影响性能? 这些问题是跟进的问题我刚才问了一下扩展方法。 解决方案 当不使用扩展方法是否合理? 这些道理,当您使用LINQ和想要链或管道输出功能从一个功能到另一个。它提高了code的可读性,让你的前preSS概念更优雅(不管它是什么值得)。 他们还让你得到任何你喜欢不修改该类型的源类型实例方法的出现,这往往可以帮助可读性和你的co
..
一个有关扩展方法的几个问题: 为什么扩展方法静态? 为什么他们需要一个静态类中声明? 什么是这个关键字表明扩展方法的参数列表?由于这是一个静态类,请问该怎么做“这个”关键字的工作在这方面? 如何内存分配发生这些类型的方法? 解决方案 静态和非静态方法之间的唯一区别是,一个非静态方法接受一个隐含参数 - 这个。扩展方法中,不调用在其上的方法被声明的对象的情况下,因此没有办法通过它们的
..
谁能帮我用计数的扩展方法的IEnumerable (非通用接口)。 我知道这是不支持LINQ但如何手动写呢? 解决方案 yourEnumerable.Cast<对象>()COUNT() 应用于对性能的注释:的 我觉得这是premature优化一个很好的例子,但在这里你去: 静态类EnumerableExtensions { 公共静态诠释计数(这IEnum
..
编译错误 “System.Data.SqlClient.SqlConnection”没有名为“查询”适用的方法,但似乎有该名称的扩展方法。扩展方法不能动态调度。考虑强制转换动态参数或调用不带扩展方法的语法扩展方法。 现在,我知道如何解决这个问题,但我想更好地了解错误本身。我有我建立利用小巧精致的类。最后我将提供一些更多的自定义功能,使我们这种类型的数据访问了很多更精简。在跟踪和东西特别的建
..
为什么禁止呼叫扩展方法与 REF 修改? 这一个是可能的: 公共静态无效的变化(参见TestClass的识别TestClass,TestClass的testClass2) { 识别TestClass = testClass2; } 而这其中并不: 公共静态无效ChangeWithExtensionMethod(本参考TestClass的识别TestClass,TestClas
..
我真的很喜欢末()键,会使用它所有的时间名单,其中,T> 秒。但是,因为它似乎为的IEnumerable&LT被定义; T> ,我想这枚举枚举第一 - 这应该是为O(n),而不是O(1)直接索引的最后一个元素名单,其中,T> 是标准的(LINQ)扩展方法意识到这一点? 在C ++ STL是意识到这一点凭借整体“继承树”的迭代器和诸如此类的东西。 解决方案 我只是用反光寻找
..
从previous经验,我一直在IM pression,这是完全合法的(尽管可能不建议)来调用扩展方法上的空实例。因此,在C#中,该code编译和运行: // code在静态类 静态布尔ISNULL(此对象OBJ){ 返回的obj == NULL; } // $ C $别处Ç 对象X = NULL; !布尔存在= x.IsNull(); 不过,我刚刚组建了一个小套房例如cod
..
当我尝试使用.NET 2.0或3.0运行时添加一个扩展方法,我得到的错误: 不能确定,因为所需的编译器一个新的扩展方法 类型“System.Runtime.CompilerServices.ExtensionAttribute”不能 找到。是否缺少引用System.Core.dll的? 但我找不到System.Core程序可用引用的列表,当我尝试将其添加到项目中。什么我需要做的是能够使用扩
..
我可以做一个扩展方法 System.Object的的所有子类(一切)? 例如: <扩展> 公共功能MyExtension(值作为对象)作为对象 返回值 端功能 以上的功能不会为对象实例的工作: 昏暗myObj1作为新对象() 昏暗myObj2 = myObj1.MyExtension() 编译器不接受它,是在我的电脑问题? :) 更新 这个问题似
..
考虑两个扩展方法: 公共静态牛逼MyExtension< T>(这件T O),其中T:类 公共静态牛逼MyExtension< T>(这件T O)其中T:结构 和一个类: 类MyClass的(){...} 现在调用扩展方法对上述类的一个实例: 变种O =新MyClass的(...); o.MyExtension(); //这里编译器错误.. o.MyE
..
这是一个泛型列表中的AddRange和Concat的功能之间的区别是什么?一个建议比其他? 解决方案 他们有完全不同的语义。 的AddRange通过添加其他项目将其修改列表中。 的毗连返回包含列表和其他项目的新序列,而不修改列表。 选择哪一个有你想要的语义。
..
我开始真的爱扩展方法...我想知道是否有人有她一个真正自爆自己的心意,或者只是在偶然发现聪明。 今天我写了一个例子: 由于其他用户的评论编辑: 公共静态的IEnumerable< INT>要(这个中断fromNumber,诠释toNumber){ 而(fromNumber< toNumber){ 收益回报fromNumber; fro
..