命名参数

考虑以下是我们的函数调用。

FindArea(120, 56);

在这里我们的第一个参数是长度(即 120),第二个参数是宽度(即 56)。我们正在通过该函数计算面积。以下是函数定义。

private static double FindArea(int length, int width)
       {
           try
           {
               return (length* width);
           }
           catch (Exception)
           {
               throw new NotImplementedException();
           }
       }

所以在第一个函数调用中,我们只是通过它的位置传递参数。对?

double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();

如果你运行它,你将得到如下输出。

StackOverflow 文档

现在它来了一个命名参数的功能。请参阅前面的函数调用。

Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();

这里我们在方法调用中给出命名参数。

area = FindArea(length: 120, width: 56);

现在,如果你运行此程序,你将得到相同的结果。如果我们使用命名参数,我们可以在方法调用中给出相反的名称。

Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();

命名参数的一个重要用途是,当你在程序中使用它时,它可以提高代码的可读性。它只是说明你的论点是什么,或者是什么?

你也可以给出位置参数。这意味着,位置参数和命名参数的组合。

Console.WriteLine("Area with Named argument Positional Argument : ");
            area = FindArea(120, width: 56);
            Console.WriteLine(area);
            Console.Read();

在上面的例子中,我们传递了 120 作为长度,56 作为参数宽度的命名参数。

也有一些限制。我们现在将讨论命名参数的限制。

使用命名参数的限制

在指定了所有固定参数后,必须出现命名参数规范。

如果在固定参数之前使用命名参数,则会出现如下编译时错误。

StackOverflow 文档

在指定了所有固定参数后,必须出现命名参数规范