草庐IT

call_user_func

全部标签

c# - Task.Run 和 Func<>

如何运行一个返回值并接受参数的任务?我看到有一个重载方法Task.Run(Func)但是我怎样才能在那里传递参数呢? 最佳答案 Func不带参数。通常,您会使用lambda表达式捕获参数。例如:publicvoidDoSomething(stringtext){Tasktask=Task.Run(()=>text.Length);...}在这里text是一个捕获的变量...所以即使你只是创建一个Func,它使用方法参数。 关于c#-Task.Run和Func,我们在StackOverfl

c# - 在 Select 和 Where 调用中重用 Linq to Entities 的 Expression<Func<T, TResult>

假设我有一个实体对象定义为publicpartialclassArticle{publicId{get;set;}publicText{get;set;}publicUserId{get;set;}}根据文章的某些属性,我需要确定给定用户是否可以删除该文章。所以我添加了一个静态方法来进行检查。像这样的东西:publicpartialclassArticle{publicstaticExpression>CanBeDeletedBy(intuserId){//Addlogictobereusedherereturna=>a.UserId==userId;}}现在我可以做using(MyE

c# - 在没有这些参数的情况下将具有默认值的方法分配给 Func<>?

我希望能够做到以下几点:FunctryMethodFunc=TryMethod;TryMethod的签名如下:boolTryMethod(intvalue,intvalue2=0,doublevalue3=100.0)我不反对将方法分解为柯里化(Currying)格式,但如果有一种方法可以做到这一点,那么这样做会更有效。 最佳答案 可选参数是一种语言特性,编译器负责将对带有可选参数的方法的调用转换为带有值的完整调用。看看下面这段简单的代码,publicvoidGeneralMethod(){TestMethod(6);}public

c# - ManualResetEventSlim : Calling . Set() 后跟 .Reset() 不会释放 *任何* 等待线程

ManualResetEventSlim:调用.Set()后立即调用.Reset()不会释放任何等待线程(注意:ManualResetEvent也会发生这种情况,而不仅仅是ManualResetEventSlim。)我在发布和Debug模式下都尝试了下面的代码。我在四核处理器上运行的Windows764位上使用.Net4作为32位版本运行它。我从VisualStudio2012编译它(因此安装了.Net4.5)。在我的系统上运行它时的输出是:Waitingfor20threadstostartThread1started.Thread2started.Thread3started.Th

c# - 为什么在通用序列创建器上使用 Func<> 比使用 new() 约束快得多

考虑以下代码...在我对Windows7x64PC(Inteli73GHz)上的RELEASE(不是调试!)x86构建的测试中,我获得了以下结果:CreateSequence()withnew()took00:00:00.9158071CreateSequence()withcreator()took00:00:00.1383482CreateSequence()withnew()took00:00:00.9198317CreateSequence()withcreator()took00:00:00.1372920CreateSequence()withnew()took00:00:

c# - 将 Func<T, String> 转换为 Func<T, bool>

我想我的思绪正在爆炸,试图弄清楚Funcs...如果这没有意义,我道歉,现在对我来说很有意义,但已经度过了漫长的一天......1)假设给你一个函数,它接受T并输出一个字符串:Func您能否将其转换为接受T并根据某种逻辑返回bool值的函数(在这种情况下,如果返回的字符串为空(String.IsNullOrWhiteSpace)?Func2)如果给你一个,你能做同样的事情吗Expression>并需要将其转换为Func根据返回的字符串是否为空(String.IsNullOrWhiteSpace)返回true/false?谢谢 最佳答案

c# - 为任何方法创建 Func 或 Action(在 C# 中使用反射)

我的应用程序根据设置动态加载dll来自数据库(文件、类和方法名称)。为了促进、加快和减少反射的使用,我想要一个缓存....遵循使用的想法:MethodInfo.Invoke没有任何表现形式(ReflectionPerformance-CreateDelegate(PropertiesC#))我想翻译对方法的任何调用。我想到了一些可以像这样工作的东西:publicstaticTCreate(Typetype,stringmethodName)//orpublicstaticTCreate(MethodInfoinfo)//touselikethis:varaction=Create>(t

c# - XmlWriter : is calling Close() required if using a using block?

使用usingblock(不调用Close())创建XmlWriter是否足够,还是使用try/finallyblock并在finally中调用Close()更好? 最佳答案 usingblock是try/finallyblock的快捷方式,它在任何实现IDisposable的对象上调用Dispose()。对于流和流编写器,Dispose()通常手动调用Close()。使用反射器,这里是XmlWriter的Dispose方法:protectedvirtualvoidDispose(booldisposing){if(this.Wri

c# - 如何避免 "Response.Redirect cannot be called in a Page callback"

我正在清理一些遗留框架代码,其中很大一部分只是通过异常编码。没有检查任何值以查看它们是否为空,因此会抛出和捕获大量异常。我已经清理了其中的大部分,但是,有一些错误/登录/安全相关的框架方法正在执行Response.Redirect,现在我们正在使用ajax,我们得到了很多"不能在页面回调中调用Response.Redirect。”我想尽可能避免这种情况。有没有办法以编程方式避免此异常?我正在寻找类似的东西if(Request.CanRedirect)Request.Redirect("url");请注意,Server.Transfer也会发生这种情况,因此我希望能够检查我是否能够执行R

C#:Func<> 而不是方法?

这个问题在这里已经有了答案:FuncDelegatevsFunction(6个答案)关闭9年前。这是给所有知情人士的好奇问题:使用Func而不是方法有任何危害/缺点吗?简单示例:privatestaticFunc>Foo=(i1,i2,dbc)=>(i1!=0)?dbc.Bar(i2):newList{/*somedefaultvalues...*/};对比privatestaticListFoo(inti1,inti2,DBContextdbc){returni1!=0?dbc.Bar(i2):newList{/*somedefaultvalues...*/};}