Tag: 委托

代表和Lambdas和LINQ,哦,我的!

作为一个相当初级的开发人员,我遇到的问题突出了我缺乏经验和我所知的漏洞。 如果这里的序言太长,请原谅。 我发现自己处于一个涉及我需要学习一些新的(对我而来)技术的项目,包括LINQ(对于这个项目来说是OBJECTS和XML)等等。 我读到的所有内容都表明,要使用LINQ,我需要完全理解以下内容(代理,匿名方法和Lambda表达式)。 好的,所以现在很有趣。 我曾经使用过.NET事件模型,因此我已经消费了代表,但是大多数细节都是隐藏的(感谢Microsoft!)。 我理解,在基本层面上,委托实例是指向方法的指针(我知道这种过度简化)。 我知道匿名方法本质上是一种内联的未命名方法,通常(如果不是唯一的话)创建为委托的目标。 我也理解lambdas以不同的方式用于简化语法,并可用于将简单的匿名方法指向委托。 请原谅我,如果我的任何描述都在这里,那么这就是我理解这些主题的基本层面。 所以,挑战: 如果我对这些项目的了解甚至更接近,至少在基本层面上有人能告诉我吗? 我不是在寻找复杂的深奥细节,只是基础(现在)。 在将LINQ应用于项目中以达到合理的效果之前,我需要在多大程度上真正理解这些概念? 我想完全理解它,并愿意花时间。 在我需要完成一些工作之前,我可能没有时间完全理解所有这些东西。 任何人都可以向我指出一些解释这些主题的好文章,并将它们应用到“真实世界”的例子中,这样我就可以了解主题的基础知识和应用它们吗? 我的意思是现实世界,我是如何在“客户和发票”的背景下使用它而不是抽象的“矢量和形状”或“动物和奶牛”。 出于演示目的,这种情况可能有点人为,但希望不是严格的学术性的。 我在网上和书中找到了一些例子,但似乎很少有“简单英语”的解释。 提前感谢您的耐心,时间和专业知识。

具有OR子句的lambda表达式的LINQ where子句和返回不完整结果的空值

问题简而言之 我们在Where子句中使用了lambda表达式,它没有返回“预期”结果。 快速摘要 在analyzeObjectRepository对象中,某些对象也包含名为Parent的属性中的父关系。 我们正在查询此analyzeObjectRepository以返回一些对象。 详情 下面的代码应该做的是,返回包含ID值的特定对象的根,第一个子节点(直接子节点)和孙子节点。 在下面的代码中,常识说所有使3个单独的OR条件中的任何一个成为真的结果都应该像结果一样返回。 List analysisObjects = analysisObjectRepository .FindAll() .Where(x => x.ID == packageId || x.Parent.ID == packageId || x.Parent.Parent.ID == packageId) .ToList(); 但上面的代码只返回子孙,而没有返回根对象(使用null父值) x.ID == packageId 条件是真的。 只有制作第二个的对象 x.Parent.ID == packageId 第三 x.Parent.Parent.ID == packageId 条款被退回。 如果我们只编写代码以使用下面的代码返回根对象,则返回它,因此我们完全确定analyzeObjectRepository包含所有对象 List analysisObjects = analysisObjectRepository .FindAll() .Where(x => x.ID == packageId ) .ToList(); 但是,当我们将其重写为委托时,我们得到预期的结果,返回所有预期的对象。 […]

异步委托与线程

用异步代理(回调)替换线程(而不是ThreadPool线程)。 我的场景:为每个客户端生成一个Thread / del.beginInvoke()。 据我说, 原因 在Callback中需要再次通过Callback / Call delegate进行通知 避免线程开销,(委托使用Threadpool线程) 传递参数(避免转换为对象)并需要从方法返回值。 如果上述原因错误,请纠正我。 还有其他原因吗? 什么情况我确实需要用线程不能的异步委托做一些事情? 3.表现? 例 public delegate void SendCallbackType(); SendCallbackType senderdel= new SendCallbackType(SendData); public void StartSend() // This method Could be Called more than 700 times (Thread per Client) { senderdel.BeginInvoke(SendCallback,null); // (or) Thread t = new Thread(new ThreadStart(ThreadSend)); t.IsBackground = true; t.Start(); […]

c#中的委托与c ++中的函数指针有什么区别?

可能重复: c#中有函数指针吗? 我有兴趣找到C#中的委托和C ++中的函数指针之间的区别。

使用委托在C#中实现的观察者模式?

有一个问题已经回答是在C#中,是不是已经使用事件实现的观察者模式? 它询问观察者模式是否已在c#中使用事件实现。 虽然我得到了事件和观察者模式,但不是观察者模式真的只是委托和事件是进一步的实现吗?

LINQ vs Lambda vs Anonymous Methods vs Delegates

任何人都可以解释什么是LINQ,Lambda,匿名方法,代表意味着什么? 这3个如何彼此不同? 另一个可替换吗? 当我使用谷歌搜索时,我没有得到任何具体的答案

(如何)绑定/重新绑定方法以使用不同签名的委托?

我是一个c ++开发人员,在c ++中使用了信号和插槽,这对我来说似乎与c#中的委托类似。 我发现自己在寻找“绑定”提供的function时感到很茫然,并且觉得我必须遗漏一些东西。 我觉得像C ++这样的东西应该可以在c#中使用委托。 这里有一些psudo代码,用于我将在c ++中做什么: Slot someCallback; int foo(int i) { std::cout << "Value: " << i << "\n"; return i; } int main() { int i = 0; Slot someCallback = bind( fun_ptr(foo), i ); ++i; // added to show that late evaluation would be a non-trivial difference int result = […]

委托会员超过经典function的优点或缺点是什么?

class my_class { public int add_1(int a, int b) {return a + b;} public func add_2 = (a, b) => {return a + b;} } add_1是一个函数,而add_2是一个委托。 但是在这种情况下,代表们可以填补类似的角色。 由于先例和语言的设计,C#方法的默认选择应该是函数。 然而,这两种方法都有利有弊,所以我已经制作了一份清单。 这两种方法都有任何优点或缺点吗? 传统方法的优点。 更常规 函数的外部用户看到命名参数 – 对于add_2语法arg_n和类型一般信息不够。 使用intellisense-ty Minitech可以更好地工作 适用于reflection – ty Minitech inheritance – Eric Lippert 有一个“这个” – ty CodeInChaos 更低的开销,速度和内存 – ty Minitech和CodeInChaos 在更改和使用函数方面,不需要考虑public \ […]

如何在C#中为测量单位创建通用转换器?

在一个涉及温度转换的小型烹饪项目以及一些烹饪测量转换(如Imperial to Metric)的过程中,我一直在努力学习更多关于代表和lambdas的知识,我一直试图想办法制作一个可扩展的单位转换器。 这是我开始时的内容,以及关于我的一些计划的代码评论。 我没有计划像下面这样使用它,我只是测试了C#的一些function我不太了解,我也不确定如何进一步采取这一点。 有没有人对如何在下面的评论中创建我正在谈论的内容有任何建议? 谢谢 namespace TemperatureConverter { class Program { static void Main(string[] args) { // Fahrenheit to Celsius : [°C] = ([°F] − 32) × 5⁄9 var CelsiusResult = Converter.Convert(11M,Converter.FahrenheitToCelsius); // Celsius to Fahrenheit : [°F] = [°C] × 9⁄5 + 32 var FahrenheitResult = Converter.Convert(11M, Converter.CelsiusToFahrenheit); Console.WriteLine(“Fahrenheit to Celsius : […]

为什么我不能在一个接口中放置一个委托?

为什么我不能在我的界面中添加委托?