草庐IT

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

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

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# - 从属性 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=()=>

c# - 将 C# 委托(delegate)声明放在它自己的文件中的什么位置?

出于习惯,我倾向于在未嵌套时将类/结构/枚举放在单独的文件中。对于委托(delegate)人来说,为一个类轮创建一个单独的文件似乎有点过分了:publicdelegatestringMyDelegateThatIsNotNestedInAnyClass(stringpar);我通常将它添加到最密切相关的类文件的底部。我只是想知道其他人在做什么? 最佳答案 我倾向于将每种类型放在一个单独的代码文件中。这样做将帮助您在解决方案资源管理器中导航,尽管ReSharper以“GoToFile”摇摆不定(来源:jetbrains.com)和“G

c# - 为什么匿名委托(delegate)可以省略参数,而 lambda 不能?

//okActionCallbackWithParam1=delegate{};//errorCS1593:Delegate'System.Action'doesnottake0argumentsActionCallbackWithParam2=()=>{};只是想知道为什么会出现这种差异。:-/ 最佳答案 Jared当然是正确的。要添加更多详细信息:几乎没有人使用“跳过参数列表”语法。我们没有需要该功能的lambda方案。该功能使类型推断和重载解析变得复杂,并使两者更有可能失败。您希望该功能使用什么语法?Actionc==>{};

c# - 使用委托(delegate)对列表进行问题排序

我正在尝试使用委托(delegate)对列表进行排序,但出现签名匹配错误。编译器说我不能从“匿名方法”转换ListmyList=GetMyList();myList.Sort(delegate(MyTypet1,MyTypet2){return(t1.ID我错过了什么?这是我找到的一些引用资料,他们也是这样做的。DeveloperFusionReferenceMicrosoftReference 最佳答案 我想你想要:myList.Sort(delegate(MyTypet1,MyTypet2){return(t1.ID.Compa

c# - MSTEST 委托(delegate)人许可

如何对装饰有PrincipalPermission属性的代码进行单元测试?例如,这个有效:classProgram{staticvoidMain(string[]args){AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);varc=newMyClass();}}[PrincipalPermission(SecurityAction.Demand,Role=@"BUILTIN\Users")]classMyClass{publicMyClass(){Console.WriteLine

c# - 我们可以将委托(delegate)保存在文件中吗 (C#)

我有一个有委托(delegate)成员的类。我可以为该类的每个实例化对象设置委托(delegate),但还没有找到任何方法来保存该对象 最佳答案 这是一件非常冒险的事情。虽然您确实可以像任何其他对象一样序列化和反序列化委托(delegate),但委托(delegate)是指向对其进行序列化的程序内部方法的指针。如果您在另一个程序中反序列化该对象,您将得到一个SerializationException-如果你幸运的话。例如,让我们稍微修改一下darin的程序:classProgram{[Serializable]publicclas

c# - 有没有办法创建一个委托(delegate)来获取和设置 FieldInfo 的值?

对于属性,有GetGetMethod和GetSetMethod以便我可以:Getter=(Func)Delegate.CreateDelegate(typeof(Func),propertyInfo.GetGetMethod());和Setter=(Action)Delegate.CreateDelegate(typeof(Action),propertyInfo.GetSetMethod());但是我该如何处理FieldInfo?我不是在寻找GetValue和SetValue的委托(delegate)(这意味着我每次都会调用反射)Getter=s=>(T)fieldInfo.GetV