Tag: func

有人可以解释一下C#“Func <T,T>”的function吗?

我正在阅读Pro MVC 2书籍,并且有一个为HtmlHelper类创build扩展方法的例子。 这里的代码示例: public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int,string> pageUrl) { //Magic here. } 这里是一个示例用法: [Test] public void Can_Generate_Links_To_Other_Pages() { //Arrange: We're going to extend the Html helper class. //It doesn't matter if the variable we use is null HtmlHelper html = null; PagingInfo pagingInfo = PagingInfo(){ CurrentPage = 2, TotalItems […]

Func委托与refvariables

public object MethodName(ref float y) { //method } 我如何为这个方法定义一个Func委托?

你能从一个MethodInfo对象得到一个Func <T>(或类似的)吗?

我认识到,一般来说,使用反思会有性能影响。 (实际上,我自己并不是一个反思的粉丝,这纯粹是一个学术问题。) 假设存在一些看起来像这样的类: public class MyClass { public string GetName() { return "My Name"; } } 忍受我在这里。 我知道,如果我有一个名为x的MyClass的实例,我可以调用x.GetName() 。 此外,我可以设置一个Func<string>variables为x.GetName 。 这是我的问题。 假设我不知道上面的类叫做MyClass ; 我有一些对象,但我不知道它是什么。 我可以通过执行以下操作检查该对象是否具有GetName方法: MethodInfo getName = x.GetType().GetMethod("GetName"); 假设getName不为空。 然后我不能进一步检查是否getName.ReturnType == typeof(string)和getName.GetParameters().Length == 0 ,在这一点上,我不会相当肯定,我的getName对象表示的方法可以肯定会被转换为Func<string> ,不知何故? 我意识到有一个MethodInfo.Invoke ,我也意识到我总是可以创build一个Func<string>如: Func<string> getNameFunc = () => getName.Invoke(x, null); 我想我问的是,如果有任何方法从一个MethodInfo对象到它所表示的实际方法,招致反映在过程中的性能成本,但在此之后 ,能够直接调用该方法(通过,例如,一个Func<string>或类似的东西) 没有性能损失。 我所设想的可能是这样的: // obviously this would […]

Func的解释

我想知道是否有人可以解释什么Func<int, string>是,以及如何使用一些明确的例子。

带输出参数的Func <T>

我可以传递一个带有out参数的方法作为Func吗? public IList<Foo> FindForBar(string bar, out int count) { } // somewhere else public IList<T> Find(Func<string, int, List<T>> listFunction) { } Func需要一个types,所以不会在那里编译,并且调用listFunction需要一个inttypes,并且不允许输出。 有没有办法做到这一点?

如何使用Swift制作随机背景颜色

我怎样才能使用Swift做一个随机的背景颜色函数? import UIKit import AVFoundation class ViewController: UIViewController { var numberScreen = arc4random_uniform(20) var backgroundColor = arc4random() @IBOutlet weak var perfbadLabel: UILabel! @IBOutlet weak var randomNumber: UILabel! @IBOutlet weak var countLabel: UILabel! @IBOutlet weak var levelLabel: UILabel! var timer = NSTimer() var flashTimer = NSTimer() var count = 40 var labelcount = 1 var velocity […]

为什么Func <T,bool>而不是Predicate <T>?

这只是一个好奇的问题,我想知道如果有人有一个很好的答案: 在.NET Framework类库中,我们有例如这两个方法: public static IQueryable<TSource> Where<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, Func<TSource, bool> predicate ) 为什么他们使用Func<TSource, bool>而不是Predicate<TSource> ? 似乎Predicate<TSource>仅被List<T>和Array<T> ,而Func<TSource, bool>几乎被所有的Queryable和Enumerable方法和扩展方法使用…这是怎么回事?

将.net Func <T>转换为.netexpression式<Func <T >>

使用方法调用从lambda转换为Expression很容易 public void GimmeExpression(Expression<Func<T>> expression) { ((MemberExpression)expression.Body).Member.Name; // "DoStuff" } public void SomewhereElse() { GimmeExpression(() => thing.DoStuff()); } 但是我想把Func转换成expression式,只有在极less数情况下… public void ContainTheDanger(Func<T> dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work… Expression<Func<T>> DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer( "Danger manifested while " + […]