JetBrains Rider 2025.2 Help

代码检查:将委托变量转换为局部函数

局部函数与 lambda 或委托不同,不会引起额外的开销,因为它们本质上是常规方法。 例如,实例化和调用委托需要编译器生成额外的成员,并导致一些内存开销。 局部函数的另一个好处是它们支持常规方法中允许的所有语法元素。 如果可以用局部函数替换委托,JetBrains Rider 会建议这样做。

请考虑一个用户定义委托的示例。 JetBrains Rider 将委托变量 mymethod 替换为局部函数 Mymethod。 替换后,它还建议移除未使用的委托 MethodDelegate

class DelegateTest { private delegate void MethodDelegate(string message); public static void Main(string[] args) { MethodDelegate mymethod = delegate(string message) { Console.WriteLine(message); }; mymethod("test"); Console.ReadLine(); } }
class DelegateTest { public static void Main(string[] args) { void Mymethod(string message) { Console.WriteLine(message); } Mymethod("test"); Console.ReadLine(); } }

在另一个示例中,JetBrains Rider 将泛型委托 Func 替换为局部函数:

class ConvertToLambda { public static int ConvertTest() { Func<int, int, int> sum = delegate(int x, int y) { return x + y; }; return sum(10, 20); } }
class ConvertToLambda { public static int ConvertTest() { int Sum(int x, int y) { return x + y; } return Sum(10, 20); } }
最后修改日期: 2025年 9月 26日