草庐IT

delegating-constructor

全部标签

C# - 委托(delegate) System.Func< >

如何使用delegateSystem.Func?我们是否应该使用它来控制功能或事件的执行顺序?简单的例子会很有帮助 最佳答案 假设您有一个函数,例如:privatestaticstringtoLower(strings){returns.ToLower();}有一个System.Func版本接受两个泛型参数,第一个是第一个参数的类型,第二个是返回类型。因此,您可以这样写:FuncmyFunction=toLower;strings=myFunction("AsDf");//sisnow"asdf"在所有版本的System.Func中

c# - 不可变设计 : Dealing with Constructor Insanity

出于各种原因,我想开始在设计中使用更多不可变类型。目前,我正在处理一个现有类如下的项目:publicclassIssueRecord{//Therealclasshasmorereadablenames:)publicstringFoo{get;set;}publicstringBar{get;set;}publicintBaz{get;set;}publicstringProp{get;set;}publicstringProp2{get;set;}publicstringProp3{get;set;}publicstringProp4{get;set;}publicstringPr

c# - 匿名委托(delegate)可以在事件被触发后取消订阅吗?

我想知道“最佳实践”是什么,要求事件处理程序在触发一次后取消订阅。对于上下文,这是我的情况。用户已登录,并处于处理工作项的就绪状态。他们收到一个工作项,对其进行处理,然后再次准备就绪。此时,他们可能想说他们无法处理更多工作项目,但无论如何都会向他们发送一个。我希望能够做的是,一旦该操作成为可能,就允许用户“排队”“我不可用”。publiceventSomeHandlerStateChanged=delegate{};publicvoidQueueNotAvailable(){StateChanged+=(s,e)=>{if(e.CanGoNotAvailable){someObject

c# - 通过匿名委托(delegate)取消订阅事件

这个问题在这里已经有了答案:UnsubscribeanonymousmethodinC#(14个答案)关闭5年前。我多次使用Resharper5.1代码分析,我收到了resharper的评论“通过匿名委托(delegate)取消订阅事件”#PartofCodeif(((bool)e.NewValue)){listView.PreviewTextInput+=(o,args)=>listView_PreviewTextInput(o,args,listView);}else{listView.PreviewTextInput-=(o,args)=>listView_PreviewText

c# - 有人可以提炼成正确的英语委托(delegate)是什么吗?

有人可以将委托(delegate)的含义分解成一个简单、简短和简洁的解释,包括目的和一般好处吗?我试图将我的头围绕在这个问题上,但它并没有陷入困境。 最佳答案 我有一个功能:publiclongGiveMeTwoTimesTwo(){return2*2;}这个功能很烂。如果我想要3*3怎么办?publiclongGiveMeThreeTimesThree(){return3*3;}打字太多。我很懒!publiclongSquareOf(intn){returnn*n;}我的SquareOf函数不关心什么n是。它将对任何n正常运行传入

c# - 编译器为 delegate 关键字生成的密封类包含虚方法

当在C#中使用delegate关键字时,C#编译器会自动生成一个派生自System.MulticastDelegate类的类。这个编译器生成的类也包含3个方法:Invoke、BeginInvoke和EndInvoke。所有这三个方法都标记为publicvirtualextern,但有趣的是类本身标记为sealed。在密封类中定义虚方法不仅违反直觉,而且在C#中实际上是非法的。所以我的问题是,这是否有特定的原因,或者这只是那些无害的事情之一,同时牢记一些假设的future增强?编辑1:原因是否是强制使用“callVirt”IL操作码而不是“call”,以便在尝试执行这三种方法中的任何一种

c# - 表达式树和调用委托(delegate)

所以我有一个delegate它指向一些我在第一次创建delegate时实际上并不知道的函数目的。稍后将对象设置为某些功能。然后我还想制作一个表达式树,用一个参数调用委托(delegate)(为了这个问题的缘故,参数可以是5)。这是我正在努力的一点;下面的代码显示了我想要的,但无法编译。Funcfunc=null;Expressionexpr=Expression.Invoke(func,Expression.Constant(5));对于这个例子,我可以这样做(这很实用,因为我需要在运行时构建表达式树):Funcfunc=null;Expression>expr=()=>func(5)

c# - 在.NET 中,委托(delegate)的内部实现是什么?

我理解委托(delegate)的声明是这样的:publicdelegateintPerformCalculation(intx,inty);但是,一定还有更多的事情要做。委托(delegate)的目的是提供指向方法的指针,为此您将对方法的引用封装在委托(delegate)中。这个引用保存在什么样的结构中(在委托(delegate)内部)?我还了解到您可以在委托(delegate)中封装对多个方法的引用。这是否意味着委托(delegate)中有一个数组来保存这些?此外,在委托(delegate)中定义了哪些方法等。当您使用简洁声明委托(delegate)时真正发生了什么:publicde

c# - 在方法中创建委托(delegate)类型

我想在C#中创建一个委托(delegate)类型,用于创建匿名方法。例如:publicvoidMyMethod(){delegateintSum(inta,intb);SummySumImplementation=delegate(inta,intb){returna+b;}Console.WriteLine(mySumImplementation(1,1).ToString());}不幸的是,我无法使用.NET2.0和C#2.0来完成。 最佳答案 为什么要在方法内创建委托(delegate)类型?在方法之外声明它有什么问题?基本上

c# - 从属性 getter 或 setter 方法创建委托(delegate)

要从方法创建委托(delegate),您可以使用编译类型安全语法:privateintMethod(){...}//andcreatethedelegatetoMethod...Funcd=Method;属性是getter和setter方法的包装器,我想创建一个属性getter方法的委托(delegate)。有点像publicintProp{get;set;}Funcd=Prop;//or...Funcd=Prop_get;不幸的是,这不起作用。我必须创建一个单独的lambda方法,当getter方法无论如何都与委托(delegate)签名匹配时,这似乎是不必要的:Funcd=()=>