草庐IT

c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!

coder 2024-05-27 原文

作为一名相当初级的开发人员,我遇到了一个问题,它凸显了我缺乏经验和知识上的漏洞。如果这里的序言太长,请原谅。

我发现自己在一个项目中需要学习许多(对我来说)新技术,包括 LINQ(为了这个项目的目的,到 OBJECTS 和 XML)等等。到目前为止我读到的所有内容都表明,要使用 LINQ,我需要完全理解以下内容(委托(delegate)、匿名方法和 Lambda 表达式)。

好的,现在有趣的来了。我过去使用 .NET 事件模型时使用过委托(delegate),但大部分细节对我来说是隐藏的(感谢 Microsoft!)。我知道在基本层面上,委托(delegate)实例是指向方法的指针(我知道这是一种严重的过度简化)。

据我所知,匿名方法本质上是一种内联未命名方法,通常(如果不是唯一的话)创建为委托(delegate)的目标。

我还了解到,lambda 以多种方式使用以简化语法,并且可用于将简单的匿名方法指向委托(delegate)。

如果我的任何描述在这里有偏差,请原谅我,这是我理解这些主题的基本水平。

那么,挑战:

  1. 如果我对这些项目的理解甚至接近,谁能告诉我是否至少在基本水平上?我不是在寻找复杂深奥的细节,只是在寻找基础知识(目前)。

  2. 在项目中应用 LINQ 以达到合理效果之前,我需要真正理解这些概念到什么程度?我想完全理解它并愿意花时间。在我需要完成一些工作之前,我可能根本没有时间完全理解所有这些东西。

  3. 谁能给我指出一些解释这些主题并将它们应用到“真实世界”示例的好文章,以便我可以了解这些主题的基础知识及其应用?我所说的现实世界是指我如何在“客户和发票”的上下文中使用它,而不是抽象的“向量和形状”或“动物和奶牛”。出于演示目的,该场景可能有些人为设计,但希望不是严格的学术性。我在网上和书中找到了很多例子,但似乎很少有“通俗易懂”的解释。

提前感谢大家的耐心、时间和专业知识。

最佳答案

Where can i find a good in depth guide to C# 3?

1) 到目前为止,您的知识似乎还不错。 Lambda 表达式被转换为匿名方法或 System.Linq.Expressions.Expression,具体取决于上下文。由于您没有使用数据库技术,因此不需要理解表达式(所有 lambda 表达式都是匿名方法)。您没有列出扩展方法,但这些方法非常重要(也很容易)理解。确保您了解如何将扩展方法应用于接口(interface) - 因为 linq 中的所有功能都来自 System.Linq.Enumerable - 针对 IEnumerable(Of T) 的扩展方法的集合。

2) 您不需要对 lambda 有深入的了解。

箭头语法 ( => ) 对我来说是最大的障碍。箭头分隔 lambda 表达式的签名和主体。

永远记住:Linq 方法在枚举之前不会执行。

注意使用 loop variables in a lambda .这是延迟执行的副作用,特别难以追踪。

3) 当然,这是我的一些答案,显示了 linq 方法调用 - 一些带有 xml。

关于c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439541/

有关c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!的更多相关文章

  1. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  2. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  3. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  4. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  5. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  6. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  7. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  8. ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure' - 2

    我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a

  9. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

  10. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

随机推荐