本文介绍了如何创建之间的扩展方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个变量,其值在运行时填充.我想使用扩展方法检查该值是否在两个相同的数据类型值之间(例如,最低和最高).
I have a variable whose value is populated at runtime. I want to check whether that value is between two same datatype values (say lowest and highest) or not using an Extension Method.
我想检查一下
int a = 2; //here static but is can be changed at runtime if(a.Between(0,8)) DoSomething(); else DoNothing();如果a为0或8或它们之间的任何值,则应返回true.
If a is 0 or 8 or any value between them, it should return true.
如果a为(-1或小于-1)或(9或大于9),则它应返回false
If a is (-1 or less) or (9 or greater) then it should return false
我想创建一个扩展方法,例如
i want to create an extension method like
public static bool Between<T1>(this T1 val1, T1 lowest, T1 highest) where ???? { What code to write here???? }推荐答案
您可以这样做:
public static bool Between<T>(this T actual, T lower, T upper) where T : IComparable<T> { return actual.CompareTo(lower) >= 0 && actual.CompareTo(upper) <= 0; }参考此处
或者如果要在集合上执行此操作,则可以执行以下操作:
Or if you want to do it on a collection you can do this:
public static IEnumerable<TSource> Between<TSource, TResult> ( this IEnumerable<TSource> source, Func<TSource, TResult> selector, TResult lowest, TResult highest ) where TResult : IComparable<TResult> { return source.OrderBy(selector). SkipWhile(s => selector.Invoke(s).CompareTo(lowest) < 0). TakeWhile(s => selector.Invoke(s).CompareTo(highest) <= 0 ); }参考此处
用法:
var tenTo40 = list.Between(s => s, 10, 40);更多推荐
如何创建之间的扩展方法
发布评论