返回顶部
首页 > 资讯 > 精选 >static匿名函数怎么在C#9 中使用
  • 891
分享到

static匿名函数怎么在C#9 中使用

2023-06-14 09:06:24 891人浏览 泡泡鱼
摘要

static匿名函数怎么在C#9 中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。匿名方法的代价匿名方法代价不低,因为它有 委托调用 方面的开销,什么意思呢

static匿名函数怎么在C#9 中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

匿名方法的代价

匿名方法代价不低,因为它有 委托调用 方面的开销,什么意思呢?如果你的 lambda 里需要捕获封闭方法的局部变量或者参数,那么就会存在两种堆分配,一种是委托上的分配,另一种是闭包上的分配,如果你的 lambda 仅仅捕获一个封闭方法的实例状态,那么仅会有委托分配,如果你的 lambda 什么都不捕获或者仅捕获一个静态状态,那么就没有任何分配。

如果你有点懵的话,使用下面的例子加深理解。

int y = 1;MyMethod(x => x + y);

上面代码的 lambda 中需要获取 y,所以就有了意想不到的堆分配,要想解决,可以将 y 定义为 const 或者 static 来避免这种不必要的分配开销,修改代码如下:

const int y = 1;MyMethod(static x => x + y);

为了避免这种不必要和浪费内存的分配,可以在 lambda 上使用 static 关键词 及 变量上标注 const,值得注意的是,static 匿名函数不能访问封闭方法的局部变量和参数和 this 指针,但可以引用它的 静态方法 和 常量。

C#9 中使用静态匿名方法

先看一下例子:

    public class Demo    {        private string fORMattedText = "{0} It was developed by Microsoft's Anders Hejlsberg in the year 2000.";        void DisplayText(Func<string, string> func)        {            Console.WriteLine(func("C# is a popular programming language."));        }        public void Display()        {            DisplayText(text => string.Format(formattedText, text));            Console.Read();        }    }    class Program    {        static void Main(string[] args)        {            new Demo().Display();            Console.Read();        }    }

上面的例子中,formattedText变量会被 DisplayText 方法中的 func 所捕获,这也就意味着它会产生你意料之外的内存分配,把程序跑起来之后,会看到如下的输出。

static匿名函数怎么在C#9 中使用

为了避免这种内存分配,你只需要做两件事。

  • formattedText 上标记 const。

  • lambda 上标记 static。

所以修改后的代码如下:

    public class Demo    {        private const string formattedText = "{0} It was developed by Microsoft's Anders Hejlsberg in the year 2000.";        void DisplayText(Func<string, string> func)        {            Console.WriteLine(func("C# is a popular programming language."));        }        public void Display()        {            DisplayText(static text => string.Format(formattedText, text));            Console.Read();        }    }

现在就没有任何你意料之外的分配了,我想这也是你想要的。

现在你可以使用 static + const 组合来提升应用程序性能了,同时也可以有效的阻止在 lambda 中误用封闭方法中的局部变量和参数引发的不必要开销。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: static匿名函数怎么在C#9 中使用

本文链接: https://lsjlt.com/news/269595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • static匿名函数怎么在C#9 中使用
    static匿名函数怎么在C#9 中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。匿名方法的代价匿名方法代价不低,因为它有 委托调用 方面的开销,什么意思呢...
    99+
    2023-06-14
  • 如何在C#9 中使用static匿名函数
    目录匿名方法的代价C#9 中使用静态匿名方法匿名函数 在 C# 中已经出现很多年了,虽然匿名函数用起来很爽,但代价是不小的,为了避免不必要那些你意想不到的内存分配,这就是为什么 C#...
    99+
    2024-04-02
  • C++11中的lambda匿名函数怎么使用
    本篇内容主要讲解“C++11中的lambda匿名函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11中的lambda匿名函数怎么使用”吧!lambda 源自希腊字母表中第 11 ...
    99+
    2023-07-04
  • C#匿名函数和匿名方法的使用
    目录匿名函数的语法 C# 匿名函数使用场景在 C# 中,可以将匿名函数简单的理解为没有名称只有函数主体的函数。匿名函数提供了一种将代码块作为委托参数传递的技术,它是一个&l...
    99+
    2023-05-14
    C#匿名函数和匿名方法 C# 匿名函数
  • C#匿名函数和匿名方法如何使用
    这篇文章主要讲解了“C#匿名函数和匿名方法如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#匿名函数和匿名方法如何使用”吧!在 C# 中,可以将匿名函数简单的理解为没有名称只有函数主...
    99+
    2023-07-05
  • 如何在PHP中使用匿名函数
    在PHP语言中,匿名函数也被称作闭包(Closure),是一种可以在运行时定义、使用的函数,而无需提前进行命名。相较于普通函数,匿名函数可以直接作为一个变量使用并传递给其他函数,同时可以访问到其所处环境的变量值。匿名函数的语法格式如下:$f...
    99+
    2023-05-18
    PHP匿名函数 PHP闭包函数 PHP Lambda函数
  • PHP中匿名函数怎么用
    这篇文章主要介绍PHP中匿名函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! PHP中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最...
    99+
    2023-06-14
  • C++11中匿名函数lambda的使用详解
    目录一、lambda基础介绍二、lambda使用例子2.1 STL算法中的回调函数2.2 回调函数2.3 多线程编程三、总结官方介绍: C++ lambda是C++11新增的一种匿名...
    99+
    2023-05-18
    C++11匿名函数lambda使用 C++11匿名函数lambda C++11匿名函数
  • matlab匿名函数怎么用
    这篇文章主要介绍“matlab匿名函数怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“matlab匿名函数怎么用”文章能帮助大家解决问题。匿名函数  在Matlab7.0以后的版本...
    99+
    2023-06-19
  • JavaScript中如何使用匿名函数
    这篇文章将为大家详细讲解有关JavaScript中如何使用匿名函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。循环结构中的JavaScript匿名函数先看...
    99+
    2024-04-02
  • 在PHP中怎么为匿名函数指定this
    这篇文章将为大家详细讲解有关在PHP中怎么为匿名函数指定this,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关于闭包匿名函数,在JS中有个很典型的问题就是要给它绑定一个 this 作用域。其实这个问题在...
    99+
    2023-06-14
  •  Python匿名函数lambda怎么用
    今天小编给大家分享一下 Python匿名函数lambda怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前...
    99+
    2023-06-29
  • C++ 函数匿名函数的用法有哪些?
    c++++ 匿名函数,也称为 lambda 表达式,用于临时函数,如回调函数或条件表达式。语法为:[capture_clause](parameters) -> return_ty...
    99+
    2024-04-11
    函数 c++ 匿名函数
  • python中匿名函数使用什么保留字
    python中的匿名函数一般是使用lambda保留字,python中的保留字有以下几种:lambda:匿名函数;raise:触发异常后,后面的代码不会再执行;del:删除变量;in:迭代器;try,except:尝试一个可能抛出异常的程序块...
    99+
    2024-04-02
  • Golang如何使用匿名函数
    这篇文章将为大家详细讲解有关Golang如何使用匿名函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。匿名函数的两种使用方式一、在定义匿名函数的时候就可以直接使用(这种方式只使用一次)package&nb...
    99+
    2023-06-08
  • Kotlin匿名函数使用介绍
    目录1.函数的声明2.函数参数3.Unit函数4.匿名函数5.匿名函数的参数6.lambda表达式7.定义参数8.匿名函数9.函数的引用10.函数类型作为返回类型1.函数的声明 ko...
    99+
    2024-04-02
  • 如何使用 PHP 匿名函数?
    匿名函数,也被称为闭包函数,是 php 5.3 中引入的函数类型,它允许定义没有名称的函数。其优点包括代码简洁、动态创建和局部作用域。使用匿名函数的常见示例包括:与数组函数(如 arra...
    99+
    2024-04-17
    php 匿名函数 作用域
  • 为什么不使用JS匿名函数
    这篇文章主要讲解了“为什么不使用JS匿名函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“为什么不使用JS匿名函数”吧!如果你不知道匿名函数是什么,这里有一...
    99+
    2024-04-02
  • C++ 匿名函数的用法和特点
    匿名函数,又称lambda表达式,是一种不指定名称的函数,用于一次性使用或传递函数指针。特点有:匿名性、一次性使用、闭包、返回类型推断。实战中常用于排序或其他一次性函数调用。 C++ ...
    99+
    2024-04-19
    c++ 匿名函数
  • python中什么是匿名函数
    python中什么是匿名函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作