{"id":19516,"date":"2024-03-15T19:00:47","date_gmt":"2024-03-15T19:00:47","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/"},"modified":"2024-03-21T15:53:15","modified_gmt":"2024-03-21T15:53:15","slug":"how-to-use-external-variables-in-c-lambda-functions","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/","title":{"rendered":"How to use external variables in c# lambda functions?"},"content":{"rendered":"<p>In C#, if you want to use an external variable in a lambda expression, you can achieve this by capturing the variable. There are two ways to capture variables.<\/p>\n<p>1. Using by reference capture: when using external variables in a lambda expression, the variables will be captured by reference. This means that if the value of the variable is modified outside of the lambda expression, it will also be reflected inside the lambda expression.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-built_in\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\r\nAction action = () =&gt; Console.WriteLine(x);\r\nx = <span class=\"hljs-number\">20<\/span>;\r\naction(); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ed3\u679c\u4e3a20<\/span>\r\n<\/code><\/pre>\n<p>2. Value capture: When using external variables in a lambda expression, the current value of the variable will be captured by value. This means that if the variable&#8217;s value is changed outside the lambda expression, it will not be affected inside the lambda expression.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-built_in\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\r\nAction action = () =&gt;\r\n{\r\n    <span class=\"hljs-built_in\">int<\/span> y = x;\r\n    Console.WriteLine(y);\r\n};\r\nx = <span class=\"hljs-number\">20<\/span>;\r\naction(); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ed3\u679c\u4e3a10<\/span>\r\n<\/code><\/pre>\n<p>It is important to note that for reference type variables, both reference capture and value capture will capture the reference of the variable. This means that if the properties or fields of a reference type variable are modified within a lambda expression, it will affect the original variable.<\/p>\n<pre class=\"post-pre\"><code>List&lt;<span class=\"hljs-built_in\">int<\/span>&gt; numbers = <span class=\"hljs-keyword\">new<\/span> List&lt;<span class=\"hljs-built_in\">int<\/span>&gt; { <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span> };\r\nAction action = () =&gt;\r\n{\r\n    numbers.Add(<span class=\"hljs-number\">4<\/span>);\r\n    Console.WriteLine(numbers.Count);\r\n};\r\naction(); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ed3\u679c\u4e3a4<\/span>\r\nConsole.WriteLine(numbers.Count); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ed3\u679c\u4e3a4<\/span>\r\n<\/code><\/pre>\n<p>In conclusion, lambda expressions with external variables can be achieved through either reference capture or value capture, depending on the type of variable and requirements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, if you want to use an external variable in a lambda expression, you can achieve this by capturing the variable. There are two ways to capture variables. 1. Using by reference capture: when using external variables in a lambda expression, the variables will be captured by reference. This means that if the value [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-19516","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to use external variables in c# lambda functions? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to use external variables in c# lambda functions?\" \/>\n<meta property=\"og:description\" content=\"In C#, if you want to use an external variable in a lambda expression, you can achieve this by capturing the variable. There are two ways to capture variables. 1. Using by reference capture: when using external variables in a lambda expression, the variables will be captured by reference. This means that if the value [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T19:00:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T15:53:15+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"How to use external variables in c# lambda functions?\",\"datePublished\":\"2024-03-15T19:00:47+00:00\",\"dateModified\":\"2024-03-21T15:53:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\"},\"wordCount\":199,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\",\"name\":\"How to use external variables in c# lambda functions? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T19:00:47+00:00\",\"dateModified\":\"2024-03-21T15:53:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to use external variables in c# lambda functions?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to use external variables in c# lambda functions? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/","og_locale":"en_US","og_type":"article","og_title":"How to use external variables in c# lambda functions?","og_description":"In C#, if you want to use an external variable in a lambda expression, you can achieve this by capturing the variable. There are two ways to capture variables. 1. Using by reference capture: when using external variables in a lambda expression, the variables will be captured by reference. This means that if the value [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T19:00:47+00:00","article_modified_time":"2024-03-21T15:53:15+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"How to use external variables in c# lambda functions?","datePublished":"2024-03-15T19:00:47+00:00","dateModified":"2024-03-21T15:53:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/"},"wordCount":199,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/","name":"How to use external variables in c# lambda functions? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T19:00:47+00:00","dateModified":"2024-03-21T15:53:15+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-external-variables-in-c-lambda-functions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to use external variables in c# lambda functions?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=19516"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19516\/revisions"}],"predecessor-version":[{"id":53263,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19516\/revisions\/53263"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=19516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=19516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=19516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}