在C#中,匿名方法是一种没有名称的方法,可以被用作委托的参数或者赋值给委托类型的变量。匿名方法主要有两种形式:匿名方法和lambda表达式。
一、匿名方法
匿名方法是C# 2.0引入的特性。匿名方法用delegate
关键字定义,它可以有参数,也可以没有参数。如下示例:
namespace niming_function
{
internal class Program
{
static void square2(int num)
{
int result = num * num;
Console.WriteLine(result);
}
static void Main(string[] args)
{
Console.WriteLine("匿名函数");
Actionint> square = delegate (int num)
{
int result = num * num;
Console.WriteLine(result);
};
square(3); // 输出:9
square2(3); // 输出:9
}
}
}
在这个示例中,我们创建了一个服务器托管网匿名方法square,该方法接受一个整数,计算它的平方,并将结果打印到控制台。然后我们将这个匿名方法赋值给Action
类型的变量square
,并调用这个方法。匿名方法square等同于类成员方法square2,只是square是在方法里面定义的方法,写法和square2有差别。
Action的解释
在C#中,Action是一个委托(delegate)。它被用来表示一个没有返回值且可能带有任意数量参数的方法。这种方法被封装在一个 Action 委托实例中,然后可以像普通方法一样被调用。Action 委托可以带有类型参数,以此来定义参数的类型。
匿名函数是没有名字的方法或函数。它们常常被用作参数传递给其他方法,或者用来定义事件处理程序。在C#中,匿名函数常常通过Func和Action委托来表示。
总结:
Action表示的匿名方法没有返回值,Func表示的匿名方法有返回值。
接受两个int参数的Action委托的例子
Actionint, int> addAndPrint = (x, y) =>
{
int result = x + y;
Console.WriteLine(result);
};
addAndPrint(3, 5); // 输出 8
接受任意参数的Action委托的例子
Actionobject[]> printAll = args =>
{
foreach (var arg in args)
{
Console.WriteLine(arg);
}
};
printAll(new object[] { "Hello, world!", 42, DateTime.Now });
Func的用法
//如果你的匿名函数有返回值,那么你应该使用 Func 委托而不是 Action 委托。
//Func 委托用来表示有返回值的函数,最后一个类型参数表示返回类型。
Funcint, int, int> addFunc = (x, y) => x + y;
int result = addFunc(3, 5);
Console.WriteLine(result); // 输出 8
在上述例子中,addFunc 是一个 Func 委托,它接受两个 int 类型的参数并返回一个 int 类型的结果。这个委托被指定了一个匿名函数,即 (x, y) => x + y,这个匿名函数接受两个参数并返回它们的和。
需要注意的是,Action 和 Func 委托都可以接受类型参数来指定参数的类型,但 Func 委托的最后一个类型参数总是用来表示返回类型的。Action 委托则没有返回值。
全部代码如下:
namespace niming_function
{
internal class Program
{
static void square2(int num)
{
int result = num * num;
Console.WriteLine(result);
}
static void Main(string[] args)
{
Console.WriteLine("匿名函数");
Actionint> square = delegate (int num)
{
int result = num * num;
Console.WriteLine(result);
};
square(3); // 输出:9
square2(3); // 输出:9
// 下是一个接受两个int参数的Action委托的例子
Actionint, int> addAndPrint = (x, y) =>
{
int result = x + y;
Console.WriteLine(result);
};
addAndPrint(3, 5); // 输出 8
// 下是一个接受任意参数的Action委托的例子
Actionobject[]> printAll = args =>
{
foreach (var arg in args)
{
Console.WriteLine(arg);
}
};
printAll(new object[] { "Hello, world!", 42, DateTime.Now });
//如果你的匿名函数有返回值,那么你应该使用 Func 委托而不是 Action 委托。
//Func 委托用来表示有返回值的函数,最后一个类型参数表示返回类型。
Funcint, int, int> addFunc = (x, y) => x + y;
int result = addFunc(3, 5);
Console.WriteLine(result); // 输出 8
}
}
}
运行结果如下:
匿名函数
9
9
8
Hello, world!
42
2023/11/17 21:00:14
8
二、Lambda 表达式
Lambda 表达式是C# 3.0引入的特性,它提供了一种更简洁的方式来写匿名方法。Lambda表达式有两种形式:表达式Lambda和语句Lambda。如下示例:
// 表达式 Lambda
Funcint, int> squareExpression = num => num * num;
Console.WriteLine(squareExpression(5)); // 输出:25
// 语句 Lambda
Actionint> squareStatement = num =>
{
int result = num * num;
Console.WriteLine(result);
};
squareStatement(5); // 输出:25
在这个示例中,我们使用Lambda表达式创建了两个匿名方法,它们都接受一个整数,计算它的平方,并将结果打印到控制台。然后我们将这些匿名方法分别赋值给Func
和Act服务器托管网ion
类型的变量,并调用这些方法。
总的来说,匿名方法提供了一种方便的方式来创建和使用小的、简单的方法,而不需要定义一个完整的方法。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: Adobe Photoshop 2023最新激活(附图文教程)
以前PS喜欢用这个,不过现在简单搞搞在手机上也能搞定。好久不用了,但偶尔需要用的时候还挺麻烦。有专业需求的小伙伴拿走不谢。 介绍 Photoshop软件是一个非常强大的数字图像处理和编辑软件,具有直观易用的用户界面,各种图像编辑和处理工具,各种图层和蒙版功能,…